@fjall/components-infrastructure 0.72.0 → 0.73.2
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.
|
@@ -2,23 +2,36 @@ import { Construct } from "constructs";
|
|
|
2
2
|
import App from "../../app";
|
|
3
3
|
import { Secret } from "../../resources/aws/secrets";
|
|
4
4
|
import { Connections, IConnectable, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
5
|
-
import { IInstanceEngine } from "aws-cdk-lib/aws-rds";
|
|
6
|
-
type
|
|
7
|
-
export type CommonStorageProps = {
|
|
5
|
+
import { IInstanceEngine, IClusterEngine } from "aws-cdk-lib/aws-rds";
|
|
6
|
+
type BaseStorageProps = {
|
|
8
7
|
vpc?: IVpc;
|
|
9
|
-
type: StorageType;
|
|
10
8
|
databaseName: string;
|
|
11
9
|
instanceType?: string;
|
|
12
10
|
};
|
|
13
|
-
export
|
|
14
|
-
|
|
11
|
+
export interface AuroraStorageProps extends BaseStorageProps {
|
|
12
|
+
type: "Aurora";
|
|
13
|
+
engine?: IClusterEngine;
|
|
14
|
+
}
|
|
15
|
+
export interface GlobalAuroraStorageProps extends BaseStorageProps {
|
|
16
|
+
type: "GlobalAurora";
|
|
17
|
+
primaryRegion: string;
|
|
18
|
+
globalClusterIdentifier?: string;
|
|
19
|
+
engine?: IClusterEngine;
|
|
20
|
+
}
|
|
21
|
+
export interface InstanceStorageProps extends BaseStorageProps {
|
|
22
|
+
type: "Instance";
|
|
15
23
|
engine?: IInstanceEngine;
|
|
16
24
|
allocatedStorage?: number;
|
|
17
25
|
port?: number;
|
|
18
|
-
}
|
|
19
|
-
export
|
|
26
|
+
}
|
|
27
|
+
export interface FreeTierStorageProps extends BaseStorageProps {
|
|
28
|
+
type: "FreeTier";
|
|
29
|
+
engine?: IInstanceEngine;
|
|
30
|
+
port?: number;
|
|
31
|
+
}
|
|
32
|
+
export type IStorageProps = AuroraStorageProps | InstanceStorageProps | GlobalAuroraStorageProps | FreeTierStorageProps;
|
|
20
33
|
export declare class StorageFactory {
|
|
21
|
-
static build(id: string, props:
|
|
34
|
+
static build<T extends IStorageProps>(id: string, props: T): (app: App, scope: Construct) => Storage;
|
|
22
35
|
}
|
|
23
36
|
export declare class Storage extends Construct implements IConnectable {
|
|
24
37
|
id: string;
|
|
@@ -29,6 +42,10 @@ export declare class Storage extends Construct implements IConnectable {
|
|
|
29
42
|
private database;
|
|
30
43
|
constructor(scope: Construct, id: string, props: IStorageProps);
|
|
31
44
|
addStorage(props: IStorageProps): void;
|
|
45
|
+
private addAurora;
|
|
46
|
+
private addAuroraGlobal;
|
|
47
|
+
private addRdsInstance;
|
|
48
|
+
private addRdsFreeTier;
|
|
32
49
|
getCredentials(): Secret;
|
|
33
50
|
getHostEndpoint(): string;
|
|
34
51
|
getHostPort(): string;
|
|
@@ -3,14 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Storage = exports.StorageFactory = void 0;
|
|
4
4
|
const constructs_1 = require("constructs");
|
|
5
5
|
const database_1 = require("../../resources/aws/database");
|
|
6
|
+
const rdsAuroraGlobal_1 = require("../../resources/aws/database/rdsAuroraGlobal");
|
|
6
7
|
class StorageFactory {
|
|
7
8
|
static build(id, props) {
|
|
8
9
|
return (app, scope) => {
|
|
9
10
|
const storageProps = {
|
|
10
|
-
...
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
...props
|
|
11
|
+
...props,
|
|
12
|
+
vpc: (props.vpc || app.getDefaultVpc())
|
|
14
13
|
};
|
|
15
14
|
return new Storage(scope, id, storageProps);
|
|
16
15
|
};
|
|
@@ -26,42 +25,67 @@ class Storage extends constructs_1.Construct {
|
|
|
26
25
|
this.addStorage(props);
|
|
27
26
|
}
|
|
28
27
|
addStorage(props) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
allocatedStorage: iProps.allocatedStorage,
|
|
47
|
-
port: iProps.port,
|
|
48
|
-
engine: iProps.engine
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
else if (props.type === "FreeTier") {
|
|
52
|
-
const fProps = props;
|
|
53
|
-
this.database = new database_1.RdsFreeTier(this, `${fProps.databaseName}Rds`, {
|
|
54
|
-
// Common props
|
|
55
|
-
vpc: fProps.vpc,
|
|
56
|
-
databaseName: fProps.databaseName,
|
|
57
|
-
// Instance specific props
|
|
58
|
-
port: fProps.port,
|
|
59
|
-
engine: fProps.engine
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
throw new Error("Invalid database type");
|
|
28
|
+
switch (props.type) {
|
|
29
|
+
case "Aurora":
|
|
30
|
+
this.addAurora(props);
|
|
31
|
+
break;
|
|
32
|
+
case "GlobalAurora":
|
|
33
|
+
this.addAuroraGlobal(props);
|
|
34
|
+
break;
|
|
35
|
+
case "Instance":
|
|
36
|
+
this.addRdsInstance(props);
|
|
37
|
+
break;
|
|
38
|
+
case "FreeTier":
|
|
39
|
+
this.addRdsFreeTier(props);
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
// Exhaustiveness check
|
|
43
|
+
const _exhaustive = props;
|
|
44
|
+
throw new Error(`Unsupported storage type ${props.type}`);
|
|
64
45
|
}
|
|
46
|
+
}
|
|
47
|
+
addAurora(props) {
|
|
48
|
+
if (!props.vpc)
|
|
49
|
+
throw new Error("VPC is required for Aurora database");
|
|
50
|
+
this.database = new database_1.RdsAurora(this, `${props.databaseName}Rds`, {
|
|
51
|
+
vpc: props.vpc,
|
|
52
|
+
databaseName: props.databaseName,
|
|
53
|
+
engine: props.engine
|
|
54
|
+
});
|
|
55
|
+
this.connections = this.database.connections;
|
|
56
|
+
}
|
|
57
|
+
addAuroraGlobal(props) {
|
|
58
|
+
if (!props.vpc)
|
|
59
|
+
throw new Error("VPC is required for Global Aurora database");
|
|
60
|
+
if (!props.primaryRegion)
|
|
61
|
+
throw new Error("primaryRegion is required for Global Aurora database");
|
|
62
|
+
this.database = new rdsAuroraGlobal_1.RdsAuroraGlobal(this, `${props.databaseName}RdsGlobal`, {
|
|
63
|
+
vpc: props.vpc,
|
|
64
|
+
databaseName: props.databaseName,
|
|
65
|
+
primaryRegion: props.primaryRegion,
|
|
66
|
+
globalClusterIdentifier: props.globalClusterIdentifier,
|
|
67
|
+
engine: props.engine
|
|
68
|
+
});
|
|
69
|
+
this.connections = this.database.connections;
|
|
70
|
+
}
|
|
71
|
+
addRdsInstance(props) {
|
|
72
|
+
this.database = new database_1.RdsInstance(this, `${props.databaseName}Rds`, {
|
|
73
|
+
vpc: props.vpc,
|
|
74
|
+
databaseName: props.databaseName,
|
|
75
|
+
instanceType: props.instanceType,
|
|
76
|
+
allocatedStorage: props.allocatedStorage,
|
|
77
|
+
port: props.port,
|
|
78
|
+
engine: props.engine
|
|
79
|
+
});
|
|
80
|
+
this.connections = this.database.connections;
|
|
81
|
+
}
|
|
82
|
+
addRdsFreeTier(props) {
|
|
83
|
+
this.database = new database_1.RdsFreeTier(this, `${props.databaseName}Rds`, {
|
|
84
|
+
vpc: props.vpc,
|
|
85
|
+
databaseName: props.databaseName,
|
|
86
|
+
port: props.port,
|
|
87
|
+
engine: props.engine
|
|
88
|
+
});
|
|
65
89
|
this.connections = this.database.connections;
|
|
66
90
|
}
|
|
67
91
|
getCredentials() {
|
|
@@ -78,4 +102,4 @@ class Storage extends constructs_1.Construct {
|
|
|
78
102
|
}
|
|
79
103
|
}
|
|
80
104
|
exports.Storage = Storage;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3Mvc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQ0FBdUM7QUFHdkMsMkRBSXNDO0FBeUJ0QyxNQUFhLGNBQWM7SUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBb0I7UUFDM0MsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLEdBQUc7b0JBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRTtpQkFDdEM7Z0JBQ0QsR0FBRyxLQUFLO2FBQ1QsQ0FBQztZQUNGLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFaRCx3Q0FZQztBQUVELE1BQWEsT0FBUSxTQUFRLHNCQUFTO0lBVXBDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBb0I7UUFDN0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQzlELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDZCxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7YUFDakMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxLQUE2QixDQUFDO1lBRTdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxzQkFBVyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDakUsZUFBZTtnQkFDZixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO2dCQUNqQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7Z0JBQ2pDLDBCQUEwQjtnQkFDMUIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtnQkFDekMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE1BQU0sR0FBRyxLQUE2QixDQUFDO1lBRTdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxzQkFBVyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDakUsZUFBZTtnQkFDZixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7Z0JBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO2dCQUNqQywwQkFBMEI7Z0JBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3RCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQTFFRCwwQkEwRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQge1xuICBSZHNBdXJvcmEsXG4gIFJkc0ZyZWVUaWVyLFxuICBSZHNJbnN0YW5jZVxufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9kYXRhYmFzZVwiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuXG5pbXBvcnQgeyBDb25uZWN0aW9ucywgSUNvbm5lY3RhYmxlLCBJVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElJbnN0YW5jZUVuZ2luZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCI7XG5cbnR5cGUgU3RvcmFnZVR5cGUgPSBcIkF1cm9yYVwiIHwgXCJJbnN0YW5jZVwiIHwgXCJGcmVlVGllclwiO1xuXG5leHBvcnQgdHlwZSBDb21tb25TdG9yYWdlUHJvcHMgPSB7XG4gIHZwYz86IElWcGM7XG4gIHR5cGU6IFN0b3JhZ2VUeXBlO1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgaW5zdGFuY2VUeXBlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXVyb3JhU3RvcmFnZVByb3BzID0ge30gJiBDb21tb25TdG9yYWdlUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEluc3RhbmNlU3RvcmFnZVByb3BzID0ge1xuICBlbmdpbmU/OiBJSW5zdGFuY2VFbmdpbmU7XG4gIGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG4gIHBvcnQ/OiBudW1iZXI7XG59ICYgQ29tbW9uU3RvcmFnZVByb3BzO1xuXG5leHBvcnQgdHlwZSBJU3RvcmFnZVByb3BzID0gQXVyb3JhU3RvcmFnZVByb3BzIHwgSW5zdGFuY2VTdG9yYWdlUHJvcHM7XG5cbmV4cG9ydCBjbGFzcyBTdG9yYWdlRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSVN0b3JhZ2VQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2VQcm9wcyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogcHJvcHMudnBjIHx8IGFwcC5nZXREZWZhdWx0VnBjKClcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmV3IFN0b3JhZ2Uoc2NvcGUsIGlkLCBzdG9yYWdlUHJvcHMpO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0b3JhZ2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHB1YmxpYyB2cGM6IElWcGM7XG5cbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0ZyZWVUaWVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJU3RvcmFnZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuXG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWU7XG4gICAgdGhpcy5hZGRTdG9yYWdlKHByb3BzKTtcbiAgfVxuXG4gIGFkZFN0b3JhZ2UocHJvcHM6IElTdG9yYWdlUHJvcHMpIHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gXCJBdXJvcmFcIikge1xuICAgICAgaWYgKCFwcm9wcy52cGMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVlBDIGlzIHJlcXVpcmVkIGZvciBBdXJvcmEgZGF0YWJhc2VcIik7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJkc0F1cm9yYSh0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmRzYCwge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gXCJJbnN0YW5jZVwiKSB7XG4gICAgICBjb25zdCBpUHJvcHMgPSBwcm9wcyBhcyBJbnN0YW5jZVN0b3JhZ2VQcm9wcztcblxuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNJbnN0YW5jZSh0aGlzLCBgJHtpUHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgICAgLy8gQ29tbW9uIHByb3BzXG4gICAgICAgIHZwYzogaVByb3BzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBpUHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICBpbnN0YW5jZVR5cGU6IGlQcm9wcy5pbnN0YW5jZVR5cGUsXG4gICAgICAgIC8vIEluc3RhbmNlIHNwZWNpZmljIHByb3BzXG4gICAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IGlQcm9wcy5hbGxvY2F0ZWRTdG9yYWdlLFxuICAgICAgICBwb3J0OiBpUHJvcHMucG9ydCxcbiAgICAgICAgZW5naW5lOiBpUHJvcHMuZW5naW5lXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IFwiRnJlZVRpZXJcIikge1xuICAgICAgY29uc3QgZlByb3BzID0gcHJvcHMgYXMgSW5zdGFuY2VTdG9yYWdlUHJvcHM7XG5cbiAgICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzRnJlZVRpZXIodGhpcywgYCR7ZlByb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICAgIC8vIENvbW1vbiBwcm9wc1xuICAgICAgICB2cGM6IGZQcm9wcy52cGMsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogZlByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgLy8gSW5zdGFuY2Ugc3BlY2lmaWMgcHJvcHNcbiAgICAgICAgcG9ydDogZlByb3BzLnBvcnQsXG4gICAgICAgIGVuZ2luZTogZlByb3BzLmVuZ2luZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YWJhc2UgdHlwZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKCk6IFNlY3JldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0Q3JlZGVudGlhbHMoKTtcbiAgfVxuXG4gIGdldEhvc3RFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldEhvc3RFbmRwb2ludCgpO1xuICB9XG5cbiAgZ2V0SG9zdFBvcnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5nZXRIb3N0UG9ydCgpO1xuICB9XG5cbiAgZ2V0RGF0YWJhc2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VOYW1lO1xuICB9XG59XG4iXX0=
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3Mvc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQ0FBdUM7QUFHdkMsMkRBSXNDO0FBQ3RDLGtGQUErRTtBQTZDL0UsTUFBYSxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQTBCLEVBQVUsRUFBRSxLQUFRO1FBQ3hELE9BQU8sQ0FBQyxHQUFRLEVBQUUsS0FBZ0IsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFHO2dCQUNuQixHQUFJLEtBQWE7Z0JBQ2pCLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFTO2FBQzNDLENBQUM7WUFDUCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBVkQsd0NBVUM7QUFFRCxNQUFhLE9BQVEsU0FBUSxzQkFBUztJQVVwQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzdCLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNSO2dCQUNFLHVCQUF1QjtnQkFDdkIsTUFBTSxXQUFXLEdBQVUsS0FBSyxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE2QixLQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUF5QjtRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQzlELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQStCO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQ0FBZSxDQUNqQyxJQUFJLEVBQ0osR0FBRyxLQUFLLENBQUMsWUFBWSxXQUFXLEVBQ2hDO1lBQ0UsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1lBQ3RELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNyQixDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQy9DLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBMkI7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNCQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQ2hFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUEyQjtRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7WUFDaEUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUEzR0QsMEJBMkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuaW1wb3J0IHtcbiAgUmRzQXVyb3JhLFxuICBSZHNGcmVlVGllcixcbiAgUmRzSW5zdGFuY2Vcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJkc0F1cm9yYUdsb2JhbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL3Jkc0F1cm9yYUdsb2JhbFwiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuXG5pbXBvcnQgeyBDb25uZWN0aW9ucywgSUNvbm5lY3RhYmxlLCBJVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElJbnN0YW5jZUVuZ2luZSwgSUNsdXN0ZXJFbmdpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuXG50eXBlIFN0b3JhZ2VUeXBlID0gXCJBdXJvcmFcIiB8IFwiSW5zdGFuY2VcIiB8IFwiRnJlZVRpZXJcIiB8IFwiR2xvYmFsQXVyb3JhXCI7XG5cbnR5cGUgQmFzZVN0b3JhZ2VQcm9wcyA9IHtcbiAgdnBjPzogSVZwYztcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG4gIGluc3RhbmNlVHlwZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVyb3JhU3RvcmFnZVByb3BzIGV4dGVuZHMgQmFzZVN0b3JhZ2VQcm9wcyB7XG4gIHR5cGU6IFwiQXVyb3JhXCI7XG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbEF1cm9yYVN0b3JhZ2VQcm9wcyBleHRlbmRzIEJhc2VTdG9yYWdlUHJvcHMge1xuICB0eXBlOiBcIkdsb2JhbEF1cm9yYVwiO1xuICBwcmltYXJ5UmVnaW9uOiBzdHJpbmc7XG4gIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICBlbmdpbmU/OiBJQ2x1c3RlckVuZ2luZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVN0b3JhZ2VQcm9wcyBleHRlbmRzIEJhc2VTdG9yYWdlUHJvcHMge1xuICB0eXBlOiBcIkluc3RhbmNlXCI7XG4gIGVuZ2luZT86IElJbnN0YW5jZUVuZ2luZTtcbiAgYWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcbiAgcG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGcmVlVGllclN0b3JhZ2VQcm9wcyBleHRlbmRzIEJhc2VTdG9yYWdlUHJvcHMge1xuICB0eXBlOiBcIkZyZWVUaWVyXCI7XG4gIGVuZ2luZT86IElJbnN0YW5jZUVuZ2luZTtcbiAgcG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgSVN0b3JhZ2VQcm9wcyA9XG4gIHwgQXVyb3JhU3RvcmFnZVByb3BzXG4gIHwgSW5zdGFuY2VTdG9yYWdlUHJvcHNcbiAgfCBHbG9iYWxBdXJvcmFTdG9yYWdlUHJvcHNcbiAgfCBGcmVlVGllclN0b3JhZ2VQcm9wcztcblxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VGYWN0b3J5IHtcbiAgc3RhdGljIGJ1aWxkPFQgZXh0ZW5kcyBJU3RvcmFnZVByb3BzPihpZDogc3RyaW5nLCBwcm9wczogVCkge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2VQcm9wcyA9IHtcbiAgICAgICAgLi4uKHByb3BzIGFzIGFueSksXG4gICAgICAgIHZwYzogKHByb3BzLnZwYyB8fCBhcHAuZ2V0RGVmYXVsdFZwYygpKSBhcyBJVnBjXG4gICAgICB9IGFzIFQ7XG4gICAgICByZXR1cm4gbmV3IFN0b3JhZ2Uoc2NvcGUsIGlkLCBzdG9yYWdlUHJvcHMpO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0b3JhZ2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHB1YmxpYyB2cGM6IElWcGM7XG5cbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0ZyZWVUaWVyIHwgUmRzQXVyb3JhR2xvYmFsO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJU3RvcmFnZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuXG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWU7XG4gICAgdGhpcy5hZGRTdG9yYWdlKHByb3BzKTtcbiAgfVxuXG4gIGFkZFN0b3JhZ2UocHJvcHM6IElTdG9yYWdlUHJvcHMpIHtcbiAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJBdXJvcmFcIjpcbiAgICAgICAgdGhpcy5hZGRBdXJvcmEocHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJHbG9iYWxBdXJvcmFcIjpcbiAgICAgICAgdGhpcy5hZGRBdXJvcmFHbG9iYWwocHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJJbnN0YW5jZVwiOlxuICAgICAgICB0aGlzLmFkZFJkc0luc3RhbmNlKHByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRnJlZVRpZXJcIjpcbiAgICAgICAgdGhpcy5hZGRSZHNGcmVlVGllcihwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRXhoYXVzdGl2ZW5lc3MgY2hlY2tcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gcHJvcHM7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc3RvcmFnZSB0eXBlICR7KHByb3BzIGFzIGFueSkudHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEF1cm9yYShwcm9wczogQXVyb3JhU3RvcmFnZVByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy52cGMpIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgQXVyb3JhIGRhdGFiYXNlXCIpO1xuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzQXVyb3JhKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgZW5naW5lOiBwcm9wcy5lbmdpbmVcbiAgICB9KTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXVyb3JhR2xvYmFsKHByb3BzOiBHbG9iYWxBdXJvcmFTdG9yYWdlUHJvcHMpIHtcbiAgICBpZiAoIXByb3BzLnZwYylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgR2xvYmFsIEF1cm9yYSBkYXRhYmFzZVwiKTtcbiAgICBpZiAoIXByb3BzLnByaW1hcnlSZWdpb24pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcmltYXJ5UmVnaW9uIGlzIHJlcXVpcmVkIGZvciBHbG9iYWwgQXVyb3JhIGRhdGFiYXNlXCIpO1xuXG4gICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNBdXJvcmFHbG9iYWwoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc0dsb2JhbGAsXG4gICAgICB7XG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgcHJpbWFyeVJlZ2lvbjogcHJvcHMucHJpbWFyeVJlZ2lvbixcbiAgICAgICAgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmdsb2JhbENsdXN0ZXJJZGVudGlmaWVyLFxuICAgICAgICBlbmdpbmU6IHByb3BzLmVuZ2luZVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuZGF0YWJhc2UuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGFkZFJkc0luc3RhbmNlKHByb3BzOiBJbnN0YW5jZVN0b3JhZ2VQcm9wcykge1xuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzSW5zdGFuY2UodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSxcbiAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICBwb3J0OiBwcm9wcy5wb3J0LFxuICAgICAgZW5naW5lOiBwcm9wcy5lbmdpbmVcbiAgICB9KTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgYWRkUmRzRnJlZVRpZXIocHJvcHM6IEZyZWVUaWVyU3RvcmFnZVByb3BzKSB7XG4gICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNGcmVlVGllcih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmRzYCwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgIHBvcnQ6IHByb3BzLnBvcnQsXG4gICAgICBlbmdpbmU6IHByb3BzLmVuZ2luZVxuICAgIH0pO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmRhdGFiYXNlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogU2VjcmV0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5nZXRDcmVkZW50aWFscygpO1xuICB9XG5cbiAgZ2V0SG9zdEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0SG9zdEVuZHBvaW50KCk7XG4gIH1cblxuICBnZXRIb3N0UG9ydCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldEhvc3RQb3J0KCk7XG4gIH1cblxuICBnZXREYXRhYmFzZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZU5hbWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { IVpc, Connections, IConnectable } from "aws-cdk-lib/aws-ec2";
|
|
3
|
+
import { IClusterEngine } from "aws-cdk-lib/aws-rds";
|
|
4
|
+
import { Secret } from "../secrets";
|
|
5
|
+
interface RdsAuroraGlobalProps {
|
|
6
|
+
vpc: IVpc;
|
|
7
|
+
databaseName: string;
|
|
8
|
+
/** primary region where the initial cluster & global cluster resource are created */
|
|
9
|
+
primaryRegion: string;
|
|
10
|
+
/** optional deterministic id for the global cluster (should be shared across stacks/regions) */
|
|
11
|
+
globalClusterIdentifier?: string;
|
|
12
|
+
/** optional engine to forward to the underlying cluster */
|
|
13
|
+
engine?: IClusterEngine;
|
|
14
|
+
}
|
|
15
|
+
export declare class RdsAuroraGlobal extends Construct implements IConnectable {
|
|
16
|
+
connections: Connections;
|
|
17
|
+
private globalCluster?;
|
|
18
|
+
private primaryCluster?;
|
|
19
|
+
private regionalCluster?;
|
|
20
|
+
private props;
|
|
21
|
+
private currentRegion;
|
|
22
|
+
private globalId;
|
|
23
|
+
constructor(scope: Construct, id: string, props: RdsAuroraGlobalProps);
|
|
24
|
+
getGlobalClusterIdentifier(): string;
|
|
25
|
+
getPrimaryClusterIdentifier(): string;
|
|
26
|
+
private getGlobalClusterEngineString;
|
|
27
|
+
addGlobalCluster(): void;
|
|
28
|
+
addAuroraCluster(): void;
|
|
29
|
+
addOutputs(): void;
|
|
30
|
+
getCredentials(): Secret;
|
|
31
|
+
getHostEndpoint(): string;
|
|
32
|
+
getHostPort(): string;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RdsAuroraGlobal = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_rds_1 = require("aws-cdk-lib/aws-rds");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const rdsAurora_1 = require("./rdsAurora");
|
|
8
|
+
class RdsAuroraGlobal extends constructs_1.Construct {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
this.props = props;
|
|
12
|
+
this.currentRegion = aws_cdk_lib_1.Stack.of(this).region;
|
|
13
|
+
this.globalId =
|
|
14
|
+
props.globalClusterIdentifier || `${props.databaseName}-global`;
|
|
15
|
+
// create clusters / global cluster depending on region
|
|
16
|
+
this.addAuroraCluster();
|
|
17
|
+
this.addGlobalCluster();
|
|
18
|
+
this.addOutputs();
|
|
19
|
+
}
|
|
20
|
+
// --- public helpers ---
|
|
21
|
+
getGlobalClusterIdentifier() {
|
|
22
|
+
return this.globalId;
|
|
23
|
+
}
|
|
24
|
+
getPrimaryClusterIdentifier() {
|
|
25
|
+
return `${this.props.databaseName}-primary-cluster`;
|
|
26
|
+
}
|
|
27
|
+
getGlobalClusterEngineString() {
|
|
28
|
+
// Default to aurora-postgresql if no engine specified (matches existing behavior)
|
|
29
|
+
if (!this.props.engine)
|
|
30
|
+
return "aurora-postgresql";
|
|
31
|
+
// DatabaseClusterEngine has engineType which will be "aurora-postgresql" or "aurora-mysql"
|
|
32
|
+
return this.props.engine.engineType || "aurora-postgresql";
|
|
33
|
+
}
|
|
34
|
+
// create the CfnGlobalCluster only in the primary region
|
|
35
|
+
addGlobalCluster() {
|
|
36
|
+
if (this.props.primaryRegion !== this.currentRegion)
|
|
37
|
+
return;
|
|
38
|
+
// create the global cluster resource referencing the primary cluster identifier
|
|
39
|
+
this.globalCluster = new aws_rds_1.CfnGlobalCluster(this, `${this.props.databaseName}GlobalCluster`, {
|
|
40
|
+
globalClusterIdentifier: this.globalId,
|
|
41
|
+
engine: this.getGlobalClusterEngineString(),
|
|
42
|
+
sourceDbClusterIdentifier: this.getPrimaryClusterIdentifier()
|
|
43
|
+
});
|
|
44
|
+
// ensure the underlying primary DBCluster L1 has the globalClusterIdentifier set
|
|
45
|
+
if (this.primaryCluster) {
|
|
46
|
+
const primaryL1 = this.primaryCluster.node.defaultChild;
|
|
47
|
+
if (primaryL1) {
|
|
48
|
+
primaryL1.globalClusterIdentifier = this.globalId;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// create an Aurora cluster in this region (primary or secondary)
|
|
53
|
+
addAuroraCluster() {
|
|
54
|
+
if (this.props.primaryRegion === this.currentRegion) {
|
|
55
|
+
// primary
|
|
56
|
+
this.primaryCluster = new rdsAurora_1.RdsAurora(this, `${this.props.databaseName}Primary`, {
|
|
57
|
+
vpc: this.props.vpc,
|
|
58
|
+
databaseName: this.props.databaseName,
|
|
59
|
+
engine: this.props.engine,
|
|
60
|
+
clusterIdentifier: this.getPrimaryClusterIdentifier()
|
|
61
|
+
});
|
|
62
|
+
this.connections = this.primaryCluster.connections;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// secondary region
|
|
66
|
+
this.regionalCluster = new rdsAurora_1.RdsAurora(this, `${this.props.databaseName}Regional`, {
|
|
67
|
+
vpc: this.props.vpc,
|
|
68
|
+
databaseName: this.props.databaseName,
|
|
69
|
+
engine: this.props.engine,
|
|
70
|
+
clusterIdentifier: `${this.props.databaseName}-secondary-${this.currentRegion}`
|
|
71
|
+
});
|
|
72
|
+
// set the L1 DBCluster property so CloudFormation will join it to the global cluster
|
|
73
|
+
if (this.regionalCluster) {
|
|
74
|
+
const regionalL1 = this.regionalCluster.node
|
|
75
|
+
.defaultChild;
|
|
76
|
+
if (regionalL1) {
|
|
77
|
+
regionalL1.globalClusterIdentifier = this.globalId;
|
|
78
|
+
}
|
|
79
|
+
this.connections = this.regionalCluster.connections;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
addOutputs() {
|
|
84
|
+
new aws_cdk_lib_1.CfnOutput(this, `${this.props.databaseName}GlobalClusterIdentifierOutput`, {
|
|
85
|
+
value: this.globalId,
|
|
86
|
+
exportName: `${this.props.databaseName}GlobalClusterIdentifier`
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
getCredentials() {
|
|
90
|
+
if (this.primaryCluster)
|
|
91
|
+
return this.primaryCluster.getCredentials();
|
|
92
|
+
if (this.regionalCluster)
|
|
93
|
+
return this.regionalCluster.getCredentials();
|
|
94
|
+
throw new Error("No Aurora cluster available to return credentials from");
|
|
95
|
+
}
|
|
96
|
+
getHostEndpoint() {
|
|
97
|
+
if (this.primaryCluster)
|
|
98
|
+
return this.primaryCluster.getHostEndpoint();
|
|
99
|
+
if (this.regionalCluster)
|
|
100
|
+
return this.regionalCluster.getHostEndpoint();
|
|
101
|
+
throw new Error("No Aurora cluster available to return endpoint from");
|
|
102
|
+
}
|
|
103
|
+
getHostPort() {
|
|
104
|
+
if (this.primaryCluster)
|
|
105
|
+
return this.primaryCluster.getHostPort();
|
|
106
|
+
if (this.regionalCluster)
|
|
107
|
+
return this.regionalCluster.getHostPort();
|
|
108
|
+
throw new Error("No Aurora cluster available to return port from");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.RdsAuroraGlobal = RdsAuroraGlobal;
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhR2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhR2xvYmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyxpREFBcUU7QUFDckUsMkNBQXVDO0FBR3ZDLDJDQUF3QztBQWN4QyxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFVNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRO1lBQ1gsS0FBSyxDQUFDLHVCQUF1QixJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksU0FBUyxDQUFDO1FBRWxFLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QiwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxrQkFBa0IsQ0FBQztJQUN0RCxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxtQkFBbUIsQ0FBQztRQUVuRCwyRkFBMkY7UUFDM0YsT0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1B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eUJBQXlCO1NBQ2hFLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRSxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4RSxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xFLElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQXJJRCwwQ0FxSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDZm5HbG9iYWxDbHVzdGVyLCBDZm5EQkNsdXN0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElWcGMsIENvbm5lY3Rpb25zLCBJQ29ubmVjdGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgSUNsdXN0ZXJFbmdpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiO1xuaW1wb3J0IHsgUmRzQXVyb3JhIH0gZnJvbSBcIi4vcmRzQXVyb3JhXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiLi4vc2VjcmV0c1wiO1xuXG5pbnRlcmZhY2UgUmRzQXVyb3JhR2xvYmFsUHJvcHMge1xuICB2cGM6IElWcGM7XG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICAvKiogcHJpbWFyeSByZWdpb24gd2hlcmUgdGhlIGluaXRpYWwgY2x1c3RlciAmIGdsb2JhbCBjbHVzdGVyIHJlc291cmNlIGFyZSBjcmVhdGVkICovXG4gIHByaW1hcnlSZWdpb246IHN0cmluZztcbiAgLyoqIG9wdGlvbmFsIGRldGVybWluaXN0aWMgaWQgZm9yIHRoZSBnbG9iYWwgY2x1c3RlciAoc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3Mgc3RhY2tzL3JlZ2lvbnMpICovXG4gIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKiogb3B0aW9uYWwgZW5naW5lIHRvIGZvcndhcmQgdG8gdGhlIHVuZGVybHlpbmcgY2x1c3RlciAqL1xuICBlbmdpbmU/OiBJQ2x1c3RlckVuZ2luZTtcbn1cblxuZXhwb3J0IGNsYXNzIFJkc0F1cm9yYUdsb2JhbCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgcHJpdmF0ZSBnbG9iYWxDbHVzdGVyPzogQ2ZuR2xvYmFsQ2x1c3RlcjtcbiAgcHJpdmF0ZSBwcmltYXJ5Q2x1c3Rlcj86IFJkc0F1cm9yYTtcbiAgcHJpdmF0ZSByZWdpb25hbENsdXN0ZXI/OiBSZHNBdXJvcmE7XG4gIHByaXZhdGUgcHJvcHM6IFJkc0F1cm9yYUdsb2JhbFByb3BzO1xuICBwcml2YXRlIGN1cnJlbnRSZWdpb246IHN0cmluZztcbiAgcHJpdmF0ZSBnbG9iYWxJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZHNBdXJvcmFHbG9iYWxQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5jdXJyZW50UmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIHRoaXMuZ2xvYmFsSWQgPVxuICAgICAgcHJvcHMuZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXIgfHwgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfS1nbG9iYWxgO1xuXG4gICAgLy8gY3JlYXRlIGNsdXN0ZXJzIC8gZ2xvYmFsIGNsdXN0ZXIgZGVwZW5kaW5nIG9uIHJlZ2lvblxuICAgIHRoaXMuYWRkQXVyb3JhQ2x1c3RlcigpO1xuICAgIHRoaXMuYWRkR2xvYmFsQ2x1c3RlcigpO1xuICAgIHRoaXMuYWRkT3V0cHV0cygpO1xuICB9XG5cbiAgLy8gLS0tIHB1YmxpYyBoZWxwZXJzIC0tLVxuICBnZXRHbG9iYWxDbHVzdGVySWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdsb2JhbElkO1xuICB9XG5cbiAgZ2V0UHJpbWFyeUNsdXN0ZXJJZGVudGlmaWVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfS1wcmltYXJ5LWNsdXN0ZXJgO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHbG9iYWxDbHVzdGVyRW5naW5lU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgLy8gRGVmYXVsdCB0byBhdXJvcmEtcG9zdGdyZXNxbCBpZiBubyBlbmdpbmUgc3BlY2lmaWVkIChtYXRjaGVzIGV4aXN0aW5nIGJlaGF2aW9yKVxuICAgIGlmICghdGhpcy5wcm9wcy5lbmdpbmUpIHJldHVybiBcImF1cm9yYS1wb3N0Z3Jlc3FsXCI7XG5cbiAgICAvLyBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUgaGFzIGVuZ2luZVR5cGUgd2hpY2ggd2lsbCBiZSBcImF1cm9yYS1wb3N0Z3Jlc3FsXCIgb3IgXCJhdXJvcmEtbXlzcWxcIlxuICAgIHJldHVybiAodGhpcy5wcm9wcy5lbmdpbmUgYXMgYW55KS5lbmdpbmVUeXBlIHx8IFwiYXVyb3JhLXBvc3RncmVzcWxcIjtcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgQ2ZuR2xvYmFsQ2x1c3RlciBvbmx5IGluIHRoZSBwcmltYXJ5IHJlZ2lvblxuICBhZGRHbG9iYWxDbHVzdGVyKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByaW1hcnlSZWdpb24gIT09IHRoaXMuY3VycmVudFJlZ2lvbikgcmV0dXJuO1xuXG4gICAgLy8gY3JlYXRlIHRoZSBnbG9iYWwgY2x1c3RlciByZXNvdXJjZSByZWZlcmVuY2luZyB0aGUgcHJpbWFyeSBjbHVzdGVyIGlkZW50aWZpZXJcbiAgICB0aGlzLmdsb2JhbENsdXN0ZXIgPSBuZXcgQ2ZuR2xvYmFsQ2x1c3RlcihcbiAgICAgIHRoaXMsXG4gICAgICBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1HbG9iYWxDbHVzdGVyYCxcbiAgICAgIHtcbiAgICAgICAgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI6IHRoaXMuZ2xvYmFsSWQsXG4gICAgICAgIGVuZ2luZTogdGhpcy5nZXRHbG9iYWxDbHVzdGVyRW5naW5lU3RyaW5nKCksXG4gICAgICAgIHNvdXJjZURiQ2x1c3RlcklkZW50aWZpZXI6IHRoaXMuZ2V0UHJpbWFyeUNsdXN0ZXJJZGVudGlmaWVyKClcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHByaW1hcnkgREJDbHVzdGVyIEwxIGhhcyB0aGUgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXIgc2V0XG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHtcbiAgICAgIGNvbnN0IHByaW1hcnlMMSA9IHRoaXMucHJpbWFyeUNsdXN0ZXIubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuREJDbHVzdGVyO1xuICAgICAgaWYgKHByaW1hcnlMMSkge1xuICAgICAgICBwcmltYXJ5TDEuZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXIgPSB0aGlzLmdsb2JhbElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGNyZWF0ZSBhbiBBdXJvcmEgY2x1c3RlciBpbiB0aGlzIHJlZ2lvbiAocHJpbWFyeSBvciBzZWNvbmRhcnkpXG4gIGFkZEF1cm9yYUNsdXN0ZXIoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJpbWFyeVJlZ2lvbiA9PT0gdGhpcy5jdXJyZW50UmVnaW9uKSB7XG4gICAgICAvLyBwcmltYXJ5XG4gICAgICB0aGlzLnByaW1hcnlDbHVzdGVyID0gbmV3IFJkc0F1cm9yYShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5wcm9wcy5kYXRhYmFzZU5hbWV9UHJpbWFyeWAsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHRoaXMucHJvcHMudnBjLFxuICAgICAgICAgIGRhdGFiYXNlTmFtZTogdGhpcy5wcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgZW5naW5lOiB0aGlzLnByb3BzLmVuZ2luZSxcbiAgICAgICAgICBjbHVzdGVySWRlbnRpZmllcjogdGhpcy5nZXRQcmltYXJ5Q2x1c3RlcklkZW50aWZpZXIoKVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMucHJpbWFyeUNsdXN0ZXIuY29ubmVjdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlY29uZGFyeSByZWdpb25cbiAgICAgIHRoaXMucmVnaW9uYWxDbHVzdGVyID0gbmV3IFJkc0F1cm9yYShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5wcm9wcy5kYXRhYmFzZU5hbWV9UmVnaW9uYWxgLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgIGVuZ2luZTogdGhpcy5wcm9wcy5lbmdpbmUsXG4gICAgICAgICAgY2x1c3RlcklkZW50aWZpZXI6IGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfS1zZWNvbmRhcnktJHt0aGlzLmN1cnJlbnRSZWdpb259YFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICAvLyBzZXQgdGhlIEwxIERCQ2x1c3RlciBwcm9wZXJ0eSBzbyBDbG91ZEZvcm1hdGlvbiB3aWxsIGpvaW4gaXQgdG8gdGhlIGdsb2JhbCBjbHVzdGVyXG4gICAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHtcbiAgICAgICAgY29uc3QgcmVnaW9uYWxMMSA9IHRoaXMucmVnaW9uYWxDbHVzdGVyLm5vZGVcbiAgICAgICAgICAuZGVmYXVsdENoaWxkIGFzIENmbkRCQ2x1c3RlcjtcbiAgICAgICAgaWYgKHJlZ2lvbmFsTDEpIHtcbiAgICAgICAgICByZWdpb25hbEwxLmdsb2JhbENsdXN0ZXJJZGVudGlmaWVyID0gdGhpcy5nbG9iYWxJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5yZWdpb25hbENsdXN0ZXIuY29ubmVjdGlvbnM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkT3V0cHV0cygpIHtcbiAgICBuZXcgQ2ZuT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfUdsb2JhbENsdXN0ZXJJZGVudGlmaWVyT3V0cHV0YCxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZ2xvYmFsSWQsXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfUdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBTZWNyZXQge1xuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSByZXR1cm4gdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRDcmVkZW50aWFscygpO1xuICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3RlcikgcmV0dXJuIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldENyZWRlbnRpYWxzKCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gQXVyb3JhIGNsdXN0ZXIgYXZhaWxhYmxlIHRvIHJldHVybiBjcmVkZW50aWFscyBmcm9tXCIpO1xuICB9XG5cbiAgZ2V0SG9zdEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHJldHVybiB0aGlzLnByaW1hcnlDbHVzdGVyLmdldEhvc3RFbmRwb2ludCgpO1xuICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3RlcikgcmV0dXJuIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldEhvc3RFbmRwb2ludCgpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIEF1cm9yYSBjbHVzdGVyIGF2YWlsYWJsZSB0byByZXR1cm4gZW5kcG9pbnQgZnJvbVwiKTtcbiAgfVxuXG4gIGdldEhvc3RQb3J0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHJldHVybiB0aGlzLnByaW1hcnlDbHVzdGVyLmdldEhvc3RQb3J0KCk7XG4gICAgaWYgKHRoaXMucmVnaW9uYWxDbHVzdGVyKSByZXR1cm4gdGhpcy5yZWdpb25hbENsdXN0ZXIuZ2V0SG9zdFBvcnQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBBdXJvcmEgY2x1c3RlciBhdmFpbGFibGUgdG8gcmV0dXJuIHBvcnQgZnJvbVwiKTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fjall/components-infrastructure",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.73.2",
|
|
4
4
|
"bin": {
|
|
5
5
|
"infrastructure": "bin/infrastructure.js"
|
|
6
6
|
},
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@aws-sdk/client-organizations": "^3.716.0",
|
|
38
|
-
"@fjall/util": "^0.
|
|
38
|
+
"@fjall/util": "^0.73.2",
|
|
39
39
|
"@pepperize/cdk-organizations": "^0.7.135",
|
|
40
40
|
"cdk-time-sleep": "^1.0.0",
|
|
41
41
|
"constructs": "^10.0.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"overrides": {
|
|
45
45
|
"@smithy/core": "2.5.5"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "cfe49280842a341a64da4aa70abe5052eb163397",
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"aws-cdk": "^2.206.0",
|
|
50
50
|
"aws-cdk-lib": "^2.206.0",
|