@anyakichi/cdk-rsync-backup 0.2.3 → 0.3.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.
- package/assets/rsync-backup.sh +14 -2
- package/lib/index.d.ts +5 -1
- package/lib/index.js +17 -3
- package/lib/version.d.ts +1 -0
- package/lib/version.js +5 -0
- package/package.json +2 -1
- package/prettier.config.js +5 -0
package/assets/rsync-backup.sh
CHANGED
|
@@ -17,6 +17,7 @@ main() {
|
|
|
17
17
|
local mnt="/srv/rsync-backup/mnt/$host"
|
|
18
18
|
local logfile="/srv/rsync-backup/rsync-backup.$host.log"
|
|
19
19
|
local args logfile_gz s3base snapshot_id timestamp volume_id
|
|
20
|
+
local -a snapshot_ids
|
|
20
21
|
|
|
21
22
|
timestamp="$(date -u "+%Y%m%dT%H%MZ")"
|
|
22
23
|
s3base=s3://$S3_LOGS_BUCKET/RsyncBackupLogs/$(date -u "+%Y/%m/%d")/
|
|
@@ -50,7 +51,7 @@ main() {
|
|
|
50
51
|
fi
|
|
51
52
|
volume_id=$(aws ec2 create-volume --availability-zone "$INSTANCE_AZ" \
|
|
52
53
|
--encrypted --volume-type gp3 \
|
|
53
|
-
--tag-specifications "ResourceType=volume,Tags=[{Key=Name,Value=$name}]" \
|
|
54
|
+
--tag-specifications "ResourceType=volume,Tags=[{Key=Name,Value=$name},{Key=rsync-backup,Value=''}]" \
|
|
54
55
|
--query VolumeId --output text "${args[@]}")
|
|
55
56
|
|
|
56
57
|
aws ec2 wait volume-available --volume-ids "$volume_id"
|
|
@@ -85,7 +86,7 @@ main() {
|
|
|
85
86
|
|
|
86
87
|
snapshot_id=$(aws ec2 create-snapshot --volume-id "$volume_id" \
|
|
87
88
|
--description "$name-$timestamp" \
|
|
88
|
-
--tag-specifications "ResourceType=snapshot,Tags=[{Key=Name,Value=$name}]" \
|
|
89
|
+
--tag-specifications "ResourceType=snapshot,Tags=[{Key=Name,Value=$name},{Key=rsync-backup,Value=''}]" \
|
|
89
90
|
--query SnapshotId --output text)
|
|
90
91
|
|
|
91
92
|
gzip -c "$logfile" >"$logfile_gz"
|
|
@@ -101,6 +102,17 @@ main() {
|
|
|
101
102
|
done
|
|
102
103
|
aws ec2 wait volume-available --volume-ids "$volume_id"
|
|
103
104
|
aws ec2 delete-volume --volume-id "$volume_id"
|
|
105
|
+
|
|
106
|
+
if ((MAX_SNAPSHOTS > 0)); then
|
|
107
|
+
read -r -a snapshot_ids <<<"$(aws ec2 describe-snapshots \
|
|
108
|
+
--owner-ids self \
|
|
109
|
+
--filter "Name=tag:Name,Values=$name" \
|
|
110
|
+
--query "reverse(sort_by(Snapshots,&StartTime))[].SnapshotId" \
|
|
111
|
+
--output text)"
|
|
112
|
+
for ((i = MAX_SNAPSHOTS; i < ${#snapshot_ids}; i++)); do
|
|
113
|
+
aws ec2 delete-snapshot --snapshot-id "${snapshot_ids[$i]}"
|
|
114
|
+
done
|
|
115
|
+
fi
|
|
104
116
|
) &>/dev/null &
|
|
105
117
|
disown
|
|
106
118
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export interface RsyncBackupModule {
|
|
|
8
8
|
}
|
|
9
9
|
export interface RsyncBackupProps {
|
|
10
10
|
readonly modules?: RsyncBackupModule[];
|
|
11
|
-
readonly
|
|
11
|
+
readonly maxSnapshots?: number;
|
|
12
|
+
readonly instanceVersion?: string;
|
|
12
13
|
readonly keyName?: string;
|
|
13
14
|
readonly vpc?: ec2.IVpc;
|
|
14
15
|
readonly securityGroup?: ec2.ISecurityGroup;
|
|
@@ -16,7 +17,10 @@ export interface RsyncBackupProps {
|
|
|
16
17
|
readonly init?: ec2.CloudFormationInit;
|
|
17
18
|
readonly useEIP?: boolean;
|
|
18
19
|
readonly logsBucket?: s3.IBucket;
|
|
20
|
+
readonly autoDeleteLogs?: boolean;
|
|
19
21
|
}
|
|
20
22
|
export declare class RsyncBackup extends Construct {
|
|
23
|
+
readonly logsBucket: s3.IBucket;
|
|
24
|
+
readonly instance: ec2.IInstance;
|
|
21
25
|
constructor(scope: Construct, id: string, props?: RsyncBackupProps);
|
|
22
26
|
}
|
package/lib/index.js
CHANGED
|
@@ -7,12 +7,18 @@ const iam = require("aws-cdk-lib/aws-iam");
|
|
|
7
7
|
const s3 = require("aws-cdk-lib/aws-s3");
|
|
8
8
|
const constructs_1 = require("constructs");
|
|
9
9
|
const path = require("path");
|
|
10
|
+
const version_1 = require("./version");
|
|
10
11
|
class RsyncBackup extends constructs_1.Construct {
|
|
11
12
|
constructor(scope, id, props = {}) {
|
|
12
13
|
super(scope, id);
|
|
14
|
+
const maxSnapshots = props.maxSnapshots || 15;
|
|
15
|
+
if (maxSnapshots < 0 || !Number.isInteger(maxSnapshots)) {
|
|
16
|
+
throw new Error("maxSnapshots must be a positive integer");
|
|
17
|
+
}
|
|
13
18
|
const logsBucket = props.logsBucket ||
|
|
14
19
|
new s3.Bucket(this, "LogsBucket", {
|
|
15
20
|
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
21
|
+
autoDeleteObjects: props.autoDeleteLogs,
|
|
16
22
|
});
|
|
17
23
|
const vpc = props.vpc || cdk.aws_ec2.Vpc.fromLookup(this, "VPC", { isDefault: true });
|
|
18
24
|
let securityGroup;
|
|
@@ -47,6 +53,7 @@ class RsyncBackup extends constructs_1.Construct {
|
|
|
47
53
|
"ec2:CreateVolume",
|
|
48
54
|
"ec2:DeleteVolume",
|
|
49
55
|
"ec2:CreateSnapshot",
|
|
56
|
+
"ec2:DeleteSnapshot",
|
|
50
57
|
"ec2:CreateTags",
|
|
51
58
|
],
|
|
52
59
|
resources: ["*"],
|
|
@@ -68,7 +75,8 @@ class RsyncBackup extends constructs_1.Construct {
|
|
|
68
75
|
});
|
|
69
76
|
keyPair.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
|
|
70
77
|
const initConfig = new ec2.InitConfig([
|
|
71
|
-
ec2.InitFile.fromString("/etc/environment", `
|
|
78
|
+
ec2.InitFile.fromString("/etc/environment", `MAX_SNAPSHOTS=${maxSnapshots}
|
|
79
|
+
S3_LOGS_BUCKET=${logsBucket.bucketName}`.replace(/^\s+/gm, "")),
|
|
72
80
|
ec2.InitFile.fromAsset("/usr/local/bin/rsync-backup", path.join(__dirname, "../assets/rsync-backup.sh"), {
|
|
73
81
|
mode: "000755",
|
|
74
82
|
}),
|
|
@@ -114,7 +122,11 @@ class RsyncBackup extends constructs_1.Construct {
|
|
|
114
122
|
return ec2.CloudFormationInit.fromConfig(initConfig);
|
|
115
123
|
}
|
|
116
124
|
})();
|
|
117
|
-
|
|
125
|
+
let instanceId = `Instance-${version_1.LIB_VERSION.replace(/\.\d+$/, "")}`;
|
|
126
|
+
if (props.instanceVersion) {
|
|
127
|
+
instanceId += `-${props.instanceVersion}`;
|
|
128
|
+
}
|
|
129
|
+
const instance = new ec2.Instance(this, instanceId, {
|
|
118
130
|
keyName: cdk.Token.asString(keyPair.ref),
|
|
119
131
|
vpc,
|
|
120
132
|
securityGroup,
|
|
@@ -131,7 +143,9 @@ class RsyncBackup extends constructs_1.Construct {
|
|
|
131
143
|
instanceId: instance.instanceId,
|
|
132
144
|
});
|
|
133
145
|
}
|
|
146
|
+
this.logsBucket = logsBucket;
|
|
147
|
+
this.instance = instance;
|
|
134
148
|
}
|
|
135
149
|
}
|
|
136
150
|
exports.RsyncBackup = RsyncBackup;
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBQ3ZDLDZCQUE2QjtBQXVCN0IsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFDeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUEwQixFQUFFO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLFVBQVU7WUFDaEIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ2hDLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87YUFDekMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxHQUFHLEdBQ1AsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLElBQUksYUFBaUMsQ0FBQztRQUN0QyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDdkIsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckM7YUFBTTtZQUNMLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDM0QsR0FBRztnQkFDSCxnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztZQUVILGFBQWEsQ0FBQyxjQUFjLENBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUNoQixrQkFBa0IsQ0FDbkIsQ0FB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c0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnN5bmNCYWNrdXBNb2R1bGUge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNzaEtleTogc3RyaW5nO1xuICByZWFkb25seSBzaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnN5bmNCYWNrdXBQcm9wcyB7XG4gIHJlYWRvbmx5IG1vZHVsZXM/OiBSc3luY0JhY2t1cE1vZHVsZVtdO1xuXG4gIHJlYWRvbmx5IGluc3RhbmNlSWQ/OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkga2V5TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuSVNlY3VyaXR5R3JvdXA7XG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG4gIHJlYWRvbmx5IGluaXQ/OiBlYzIuQ2xvdWRGb3JtYXRpb25Jbml0O1xuICByZWFkb25seSB1c2VFSVA/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGxvZ3NCdWNrZXQ/OiBzMy5JQnVja2V0O1xufVxuXG5leHBvcnQgY2xhc3MgUnN5bmNCYWNrdXAgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUnN5bmNCYWNrdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGxvZ3NCdWNrZXQgPVxuICAgICAgcHJvcHMubG9nc0J1Y2tldCB8fFxuICAgICAgbmV3IHMzLkJ1Y2tldCh0aGlzLCBcIkxvZ3NCdWNrZXRcIiwge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCB2cGMgPVxuICAgICAgcHJvcHMudnBjIHx8IGNkay5hd3NfZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsIFwiVlBDXCIsIHsgaXNEZWZhdWx0OiB0cnVlIH0pO1xuXG4gICAgbGV0IHNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcbiAgICBpZiAocHJvcHMuc2VjdXJpdHlHcm91cCkge1xuICAgICAgc2VjdXJpdHlHcm91cCA9IHByb3BzLnNlY3VyaXR5R3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgICAgdnBjLFxuICAgICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgIGVjMi5QZWVyLmFueUlwdjQoKSxcbiAgICAgICAgZWMyLlBvcnQudGNwKDIyKSxcbiAgICAgICAgXCJBbGxvdyBTU0ggQWNjZXNzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID1cbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZSB8fFxuICAgICAgZWMyLkluc3RhbmNlVHlwZS5vZihlYzIuSW5zdGFuY2VDbGFzcy5UNEcsIGVjMi5JbnN0YW5jZVNpemUuTkFOTyk7XG5cbiAgICBjb25zdCBtYWNoaW5lSW1hZ2UgPSBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2Uoe1xuICAgICAgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMixcbiAgICAgIGNwdVR5cGU6XG4gICAgICAgIGluc3RhbmNlVHlwZS5hcmNoaXRlY3R1cmUgPT0gZWMyLkluc3RhbmNlQXJjaGl0ZWN0dXJlLlg4Nl82NFxuICAgICAgICAgID8gZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5YODZfNjRcbiAgICAgICAgICA6IGVjMi5BbWF6b25MaW51eENwdVR5cGUuQVJNXzY0LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImVjMjpEZXNjcmliZUluc3RhbmNlc1wiLFxuICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVTbmFwc2hvdHNcIixcbiAgICAgICAgICAgIFwiZWMyOkRlc2NyaWJlVm9sdW1lc1wiLFxuICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVWb2x1bWVTdGF0dXNcIixcbiAgICAgICAgICAgIFwiZWMyOkF0dGFjaFZvbHVtZVwiLFxuICAgICAgICAgICAgXCJlYzI6RGV0YWNoVm9sdW1lXCIsXG4gICAgICAgICAgICBcImVjMjpDcmVhdGVWb2x1bWVcIixcbiAgICAgICAgICAgIFwiZWMyOkRlbGV0ZVZvbHVtZVwiLFxuICAgICAgICAgICAgXCJlYzI6Q3JlYXRlU25hcHNob3RcIixcbiAgICAgICAgICAgIFwiZWMyOkNyZWF0ZVRhZ3NcIixcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJzMzpQdXRPYmplY3RcIiwgXCJzMzpQdXRPYmplY3RBY2xcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbbG9nc0J1Y2tldC5idWNrZXRBcm4sIGxvZ3NCdWNrZXQuYnVja2V0QXJuICsgXCIvKlwiXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkluc3RhbmNlUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgcnN5bmNCYWNrdXA6IHBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IGVjMi5DZm5LZXlQYWlyKHRoaXMsIFwiS2V5UGFpclwiLCB7XG4gICAgICBrZXlOYW1lOiBcInJzeW5jLWJhY2t1cFwiLFxuICAgIH0pO1xuICAgIGtleVBhaXIuYXBwbHlSZW1vdmFsUG9saWN5KGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuXG4gICAgY29uc3QgaW5pdENvbmZpZyA9IG5ldyBlYzIuSW5pdENvbmZpZyhbXG4gICAgICBlYzIuSW5pdEZpbGUuZnJvbVN0cmluZyhcbiAgICAgICAgXCIvZXRjL2Vudmlyb25tZW50XCIsXG4gICAgICAgIGBTM19MT0dTX0JVQ0tFVD0ke2xvZ3NCdWNrZXQuYnVja2V0TmFtZX1gXG4gICAgICApLFxuICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgXCIvdXNyL2xvY2FsL2Jpbi9yc3luYy1iYWNrdXBcIixcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9hc3NldHMvcnN5bmMtYmFja3VwLnNoXCIpLFxuICAgICAgICB7XG4gICAgICAgICAgbW9kZTogXCIwMDA3NTVcIixcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGVjMi5Jbml0RmlsZS5mcm9tQXNzZXQoXG4gICAgICAgIFwiL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLmluY1wiLFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2Fzc2V0cy9yc3luY2QuaW5jXCIpXG4gICAgICApLFxuICAgIF0pO1xuXG4gICAgaWYgKHByb3BzLm1vZHVsZXMpIHtcbiAgICAgIGZvciAoY29uc3QgW2ksIG1dIG9mIHByb3BzLm1vZHVsZXMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChtLnNpemUgPCAwIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKG0uc2l6ZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJtb2R1bGUgc2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlclwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRldmljZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoXCJiXCIuY2hhckNvZGVBdCgwKSArIGkpO1xuXG4gICAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICAgIGVjMi5Jbml0RmlsZS5mcm9tQXNzZXQoXG4gICAgICAgICAgICBgL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLiR7bS5uYW1lfS5jb25mYCxcbiAgICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vYXNzZXRzL3JzeW5jZC5jb25mXCIpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgICBlYzIuSW5pdENvbW1hbmQuYXJndkNvbW1hbmQoW1xuICAgICAgICAgICAgXCIvdXNyL2Jpbi9zZWRcIixcbiAgICAgICAgICAgIFwiLWlcIixcbiAgICAgICAgICAgIGBzL0Bob3N0QC8ke20ubmFtZX0vZ2AsXG4gICAgICAgICAgICBgL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLiR7bS5uYW1lfS5jb25mYCxcbiAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgICBlYzIuSW5pdENvbW1hbmQuc2hlbGxDb21tYW5kKFxuICAgICAgICAgICAgYGVjaG8gJ25vLXBvcnQtZm9yd2FyZGluZyxuby1hZ2VudC1mb3J3YXJkaW5nLG5vLVgxMS1mb3J3YXJkaW5nLGNvbW1hbmQ9XCJyc3luYy1iYWNrdXAgJHttLm5hbWV9ICR7bS5zaXplfSAvZGV2L3NkJHtkZXZpY2V9XCIgJHttLnNzaEtleX0nID4+IC9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdENvbmZpZy5hZGQoXG4gICAgICAgIGVjMi5Jbml0RmlsZS5mcm9tQXNzZXQoXG4gICAgICAgICAgXCIvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuYmFja3VwLmNvbmZcIixcbiAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2Fzc2V0cy9yc3luY2QuY29uZlwiKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgaW5pdENvbmZpZy5hZGQoXG4gICAgICAgIGVjMi5Jbml0Q29tbWFuZC5hcmd2Q29tbWFuZChbXG4gICAgICAgICAgXCIvdXNyL2Jpbi9zZWRcIixcbiAgICAgICAgICBcIi1pXCIsXG4gICAgICAgICAgYHMvQGhvc3RAL2JhY2t1cC9nYCxcbiAgICAgICAgICBgL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLmJhY2t1cC5jb25mYCxcbiAgICAgICAgXSlcbiAgICAgICk7XG4gICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgZWMyLkluaXRDb21tYW5kLmFyZ3ZDb21tYW5kKFtcbiAgICAgICAgICBcIi91c3IvYmluL3NlZFwiLFxuICAgICAgICAgIFwiLWlcIixcbiAgICAgICAgICAnc3xjb21tYW5kPVwiLipcIiB8Y29tbWFuZD1cInJzeW5jLWJhY2t1cCBiYWNrdXAgMTAwIC9kZXYvc2RiXCIgfCcsXG4gICAgICAgICAgXCIvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5c1wiLFxuICAgICAgICBdKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0ID0gKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5pbml0KSB7XG4gICAgICAgIHByb3BzLmluaXQuYWRkQ29uZmlnKFwicnN5bmNCYWNrdXBcIiwgaW5pdENvbmZpZyk7XG4gICAgICAgIHJldHVybiBwcm9wcy5pbml0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVjMi5DbG91ZEZvcm1hdGlvbkluaXQuZnJvbUNvbmZpZyhpbml0Q29uZmlnKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIHByb3BzLmluc3RhbmNlSWQgfHwgXCJJbnN0YW5jZVwiLCB7XG4gICAgICBrZXlOYW1lOiBjZGsuVG9rZW4uYXNTdHJpbmcoa2V5UGFpci5yZWYpLFxuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cCxcbiAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgIG1hY2hpbmVJbWFnZSxcbiAgICAgIHJvbGUsXG4gICAgICBpbml0LFxuICAgIH0pO1xuXG4gICAgbGV0IGVpcCwgZUlQQXNzb2NpYXRpb247XG4gICAgaWYgKHByb3BzLnVzZUVJUCkge1xuICAgICAgZWlwID0gbmV3IGVjMi5DZm5FSVAodGhpcywgXCJFSVBcIik7XG4gICAgICBlSVBBc3NvY2lhdGlvbiA9IG5ldyBlYzIuQ2ZuRUlQQXNzb2NpYXRpb24odGhpcywgXCJFSVBBc3NvY2lhdGlvblwiLCB7XG4gICAgICAgIGVpcDogZWlwLnJlZixcbiAgICAgICAgaW5zdGFuY2VJZDogaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBQ3ZDLDZCQUE2QjtBQUU3Qix1Q0FBd0M7QUF5QnhDLE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBSXhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBMEIsRUFBRTtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQzlDLElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLFVBQVU7WUFDaEIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ2hDLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87Z0JBQ3hDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxjQUFjO2FBQ3hDLENBQUMsQ0FBQztRQUVMLE1BQU0sR0FBRyxHQUNQLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU1RSxJQUFJLGFBQWlDLENBQUM7UUFDdEMsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1NBQ3JDO2FBQU07WUFDTCxhQUFhLEdBQUcsSUFB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QVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3hDLEdBQUc7WUFDSCxhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixJQUFJO1lBQ0osSUFBSTtTQUNMLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxFQUFFLGNBQWMsQ0FBQztRQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEMsY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDakUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUNaLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTthQUNoQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQWxNRCxrQ0FrTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgTElCX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnN5bmNCYWNrdXBNb2R1bGUge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNzaEtleTogc3RyaW5nO1xuICByZWFkb25seSBzaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnN5bmNCYWNrdXBQcm9wcyB7XG4gIHJlYWRvbmx5IG1vZHVsZXM/OiBSc3luY0JhY2t1cE1vZHVsZVtdO1xuICByZWFkb25seSBtYXhTbmFwc2hvdHM/OiBudW1iZXI7XG5cbiAgcmVhZG9ubHkgaW5zdGFuY2VWZXJzaW9uPzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IGtleU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwPzogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU/OiBlYzIuSW5zdGFuY2VUeXBlO1xuICByZWFkb25seSBpbml0PzogZWMyLkNsb3VkRm9ybWF0aW9uSW5pdDtcbiAgcmVhZG9ubHkgdXNlRUlQPzogYm9vbGVhbjtcblxuICByZWFkb25seSBsb2dzQnVja2V0PzogczMuSUJ1Y2tldDtcbiAgcmVhZG9ubHkgYXV0b0RlbGV0ZUxvZ3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUnN5bmNCYWNrdXAgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nc0J1Y2tldDogczMuSUJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSUluc3RhbmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSc3luY0JhY2t1cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbWF4U25hcHNob3RzID0gcHJvcHMubWF4U25hcHNob3RzIHx8IDE1O1xuICAgIGlmIChtYXhTbmFwc2hvdHMgPCAwIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKG1heFNuYXBzaG90cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm1heFNuYXBzaG90cyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlclwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dzQnVja2V0ID1cbiAgICAgIHByb3BzLmxvZ3NCdWNrZXQgfHxcbiAgICAgIG5ldyBzMy5CdWNrZXQodGhpcywgXCJMb2dzQnVja2V0XCIsIHtcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHByb3BzLmF1dG9EZWxldGVMb2dzLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCB2cGMgPVxuICAgICAgcHJvcHMudnBjIHx8IGNkay5hd3NfZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsIFwiVlBDXCIsIHsgaXNEZWZhdWx0OiB0cnVlIH0pO1xuXG4gICAgbGV0IHNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcbiAgICBpZiAocHJvcHMuc2VjdXJpdHlHcm91cCkge1xuICAgICAgc2VjdXJpdHlHcm91cCA9IHByb3BzLnNlY3VyaXR5R3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgICAgdnBjLFxuICAgICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgIGVjMi5QZWVyLmFueUlwdjQoKSxcbiAgICAgICAgZWMyLlBvcnQudGNwKDIyKSxcbiAgICAgICAgXCJBbGxvdyBTU0ggQWNjZXNzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID1cbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZSB8fFxuICAgICAgZWMyLkluc3RhbmNlVHlwZS5vZihlYzIuSW5zdGFuY2VDbGFzcy5UNEcsIGVjMi5JbnN0YW5jZVNpemUuTkFOTyk7XG5cbiAgICBjb25zdCBtYWNoaW5lSW1hZ2UgPSBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2Uoe1xuICAgICAgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMixcbiAgICAgIGNwdVR5cGU6XG4gICAgICAgIGluc3RhbmNlVHlwZS5hcmNoaXRlY3R1cmUgPT0gZWMyLkluc3RhbmNlQXJjaGl0ZWN0dXJlLlg4Nl82NFxuICAgICAgICAgID8gZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5YODZfNjRcbiAgICAgICAgICA6IGVjMi5BbWF6b25MaW51eENwdVR5cGUuQVJNXzY0LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImVjMjpEZXNjcmliZUluc3RhbmNlc1wiLFxuICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVTbmFwc2hvdHNcIixcbiAgICAgICAgICAgIFwiZWMyOkRlc2NyaWJlVm9sdW1lc1wiLFxuICAgICAgICAgICAgXCJlYzI6RGVzY3JpYmVWb2x1bWVTdGF0dXNcIixcbiAgICAgICAgICAgIFwiZWMyOkF0dGFjaFZvbHVtZVwiLFxuICAgICAgICAgICAgXCJlYzI6RGV0YWNoVm9sdW1lXCIsXG4gICAgICAgICAgICBcImVjMjpDcmVhdGVWb2x1bWVcIixcbiAgICAgICAgICAgIFwiZWMyOkRlbGV0ZVZvbHVtZVwiLFxuICAgICAgICAgICAgXCJlYzI6Q3JlYXRlU25hcHNob3RcIixcbiAgICAgICAgICAgIFwiZWMyOkRlbGV0ZVNuYXBzaG90XCIsXG4gICAgICAgICAgICBcImVjMjpDcmVhdGVUYWdzXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wiczM6UHV0T2JqZWN0XCIsIFwiczM6UHV0T2JqZWN0QWNsXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW2xvZ3NCdWNrZXQuYnVja2V0QXJuLCBsb2dzQnVja2V0LmJ1Y2tldEFybiArIFwiLypcIl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnN0YW5jZVJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJlYzIuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIHJzeW5jQmFja3VwOiBwb2xpY3ksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qga2V5UGFpciA9IG5ldyBlYzIuQ2ZuS2V5UGFpcih0aGlzLCBcIktleVBhaXJcIiwge1xuICAgICAga2V5TmFtZTogXCJyc3luYy1iYWNrdXBcIixcbiAgICB9KTtcbiAgICBrZXlQYWlyLmFwcGx5UmVtb3ZhbFBvbGljeShjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKTtcblxuICAgIGNvbnN0IGluaXRDb25maWcgPSBuZXcgZWMyLkluaXRDb25maWcoW1xuICAgICAgZWMyLkluaXRGaWxlLmZyb21TdHJpbmcoXG4gICAgICAgIFwiL2V0Yy9lbnZpcm9ubWVudFwiLFxuICAgICAgICBgTUFYX1NOQVBTSE9UUz0ke21heFNuYXBzaG90c31cbiAgICAgICAgIFMzX0xPR1NfQlVDS0VUPSR7bG9nc0J1Y2tldC5idWNrZXROYW1lfWAucmVwbGFjZSgvXlxccysvZ20sIFwiXCIpXG4gICAgICApLFxuICAgICAgZWMyLkluaXRGaWxlLmZyb21Bc3NldChcbiAgICAgICAgXCIvdXNyL2xvY2FsL2Jpbi9yc3luYy1iYWNrdXBcIixcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9hc3NldHMvcnN5bmMtYmFja3VwLnNoXCIpLFxuICAgICAgICB7XG4gICAgICAgICAgbW9kZTogXCIwMDA3NTVcIixcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGVjMi5Jbml0RmlsZS5mcm9tQXNzZXQoXG4gICAgICAgIFwiL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLmluY1wiLFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2Fzc2V0cy9yc3luY2QuaW5jXCIpXG4gICAgICApLFxuICAgIF0pO1xuXG4gICAgaWYgKHByb3BzLm1vZHVsZXMpIHtcbiAgICAgIGZvciAoY29uc3QgW2ksIG1dIG9mIHByb3BzLm1vZHVsZXMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChtLnNpemUgPCAwIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKG0uc2l6ZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJtb2R1bGUgc2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlclwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRldmljZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoXCJiXCIuY2hhckNvZGVBdCgwKSArIGkpO1xuXG4gICAgICAgIGluaXRDb25maWcuYWRkKFxuICAgICAgICAgIGVjMi5Jbml0RmlsZS5mcm9tQXNzZXQoXG4gICAgICAgICAgICBgL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLiR7bS5uYW1lfS5jb25mYCxcbiAgICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vYXNzZXRzL3JzeW5jZC5jb25mXCIpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgICBlYzIuSW5pdENvbW1hbmQuYXJndkNvbW1hbmQoW1xuICAgICAgICAgICAgXCIvdXNyL2Jpbi9zZWRcIixcbiAgICAgICAgICAgIFwiLWlcIixcbiAgICAgICAgICAgIGBzL0Bob3N0QC8ke20ubmFtZX0vZ2AsXG4gICAgICAgICAgICBgL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLiR7bS5uYW1lfS5jb25mYCxcbiAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgICBlYzIuSW5pdENvbW1hbmQuc2hlbGxDb21tYW5kKFxuICAgICAgICAgICAgYGVjaG8gJ25vLXBvcnQtZm9yd2FyZGluZyxuby1hZ2VudC1mb3J3YXJkaW5nLG5vLVgxMS1mb3J3YXJkaW5nLGNvbW1hbmQ9XCJyc3luYy1iYWNrdXAgJHttLm5hbWV9ICR7bS5zaXplfSAvZGV2L3NkJHtkZXZpY2V9XCIgJHttLnNzaEtleX0nID4+IC9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdENvbmZpZy5hZGQoXG4gICAgICAgIGVjMi5Jbml0RmlsZS5mcm9tQXNzZXQoXG4gICAgICAgICAgXCIvc3J2L3JzeW5jLWJhY2t1cC9yc3luY2QuYmFja3VwLmNvbmZcIixcbiAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2Fzc2V0cy9yc3luY2QuY29uZlwiKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgaW5pdENvbmZpZy5hZGQoXG4gICAgICAgIGVjMi5Jbml0Q29tbWFuZC5hcmd2Q29tbWFuZChbXG4gICAgICAgICAgXCIvdXNyL2Jpbi9zZWRcIixcbiAgICAgICAgICBcIi1pXCIsXG4gICAgICAgICAgYHMvQGhvc3RAL2JhY2t1cC9nYCxcbiAgICAgICAgICBgL3Nydi9yc3luYy1iYWNrdXAvcnN5bmNkLmJhY2t1cC5jb25mYCxcbiAgICAgICAgXSlcbiAgICAgICk7XG4gICAgICBpbml0Q29uZmlnLmFkZChcbiAgICAgICAgZWMyLkluaXRDb21tYW5kLmFyZ3ZDb21tYW5kKFtcbiAgICAgICAgICBcIi91c3IvYmluL3NlZFwiLFxuICAgICAgICAgIFwiLWlcIixcbiAgICAgICAgICAnc3xjb21tYW5kPVwiLipcIiB8Y29tbWFuZD1cInJzeW5jLWJhY2t1cCBiYWNrdXAgMTAwIC9kZXYvc2RiXCIgfCcsXG4gICAgICAgICAgXCIvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5c1wiLFxuICAgICAgICBdKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0ID0gKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5pbml0KSB7XG4gICAgICAgIHByb3BzLmluaXQuYWRkQ29uZmlnKFwicnN5bmNCYWNrdXBcIiwgaW5pdENvbmZpZyk7XG4gICAgICAgIHJldHVybiBwcm9wcy5pbml0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVjMi5DbG91ZEZvcm1hdGlvbkluaXQuZnJvbUNvbmZpZyhpbml0Q29uZmlnKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgbGV0IGluc3RhbmNlSWQgPSBgSW5zdGFuY2UtJHtMSUJfVkVSU0lPTi5yZXBsYWNlKC9cXC5cXGQrJC8sIFwiXCIpfWA7XG4gICAgaWYgKHByb3BzLmluc3RhbmNlVmVyc2lvbikge1xuICAgICAgaW5zdGFuY2VJZCArPSBgLSR7cHJvcHMuaW5zdGFuY2VWZXJzaW9ufWA7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBpbnN0YW5jZUlkLCB7XG4gICAgICBrZXlOYW1lOiBjZGsuVG9rZW4uYXNTdHJpbmcoa2V5UGFpci5yZWYpLFxuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cCxcbiAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgIG1hY2hpbmVJbWFnZSxcbiAgICAgIHJvbGUsXG4gICAgICBpbml0LFxuICAgIH0pO1xuXG4gICAgbGV0IGVpcCwgZUlQQXNzb2NpYXRpb247XG4gICAgaWYgKHByb3BzLnVzZUVJUCkge1xuICAgICAgZWlwID0gbmV3IGVjMi5DZm5FSVAodGhpcywgXCJFSVBcIik7XG4gICAgICBlSVBBc3NvY2lhdGlvbiA9IG5ldyBlYzIuQ2ZuRUlQQXNzb2NpYXRpb24odGhpcywgXCJFSVBBc3NvY2lhdGlvblwiLCB7XG4gICAgICAgIGVpcDogZWlwLnJlZixcbiAgICAgICAgaW5zdGFuY2VJZDogaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMubG9nc0J1Y2tldCA9IGxvZ3NCdWNrZXQ7XG4gICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuICB9XG59XG4iXX0=
|
package/lib/version.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LIB_VERSION = "0.3.0";
|
package/lib/version.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LIB_VERSION = void 0;
|
|
4
|
+
exports.LIB_VERSION = "0.3.0";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxXQUFXLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IExJQl9WRVJTSU9OID0gXCIwLjMuMFwiO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anyakichi/cdk-rsync-backup",
|
|
3
3
|
"description": "AWS CDK L3 construct for cloud backup system with rsync",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"author": "INAJIMA Daisuke <inajima@gmail.com>",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc",
|
|
8
8
|
"format": "prettier --ignore-path .gitignore -w package.json lib",
|
|
9
|
+
"prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > lib/version.ts",
|
|
9
10
|
"test": "jest",
|
|
10
11
|
"watch": "tsc -w"
|
|
11
12
|
},
|