@aws-cdk/cloud-assembly-api 0.0.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +15 -41
- package/design/NESTED_ASSEMBLIES.md +93 -0
- package/lib/artifacts/asset-manifest-artifact.d.ts +46 -0
- package/lib/artifacts/asset-manifest-artifact.js +66 -0
- package/lib/artifacts/cloudformation-artifact.d.ts +147 -0
- package/lib/artifacts/cloudformation-artifact.js +94 -0
- package/lib/artifacts/nested-cloud-assembly-artifact-aug.d.ts +1 -0
- package/lib/artifacts/nested-cloud-assembly-artifact-aug.js +19 -0
- package/lib/artifacts/nested-cloud-assembly-artifact.d.ts +45 -0
- package/lib/artifacts/nested-cloud-assembly-artifact.js +56 -0
- package/lib/artifacts/tree-cloud-artifact.d.ts +25 -0
- package/lib/artifacts/tree-cloud-artifact.js +49 -0
- package/lib/assets.d.ts +33 -0
- package/lib/assets.js +37 -0
- package/lib/bootstrap.d.ts +7 -0
- package/lib/bootstrap.js +12 -0
- package/lib/cloud-artifact-aug.d.ts +1 -0
- package/lib/cloud-artifact-aug.js +29 -0
- package/lib/cloud-artifact.d.ts +73 -0
- package/lib/cloud-artifact.js +94 -0
- package/lib/cloud-assembly.d.ts +266 -0
- package/lib/cloud-assembly.js +374 -0
- package/lib/context/ami.d.ts +4 -0
- package/lib/context/ami.js +3 -0
- package/lib/context/availability-zones.d.ts +12 -0
- package/lib/context/availability-zones.js +12 -0
- package/lib/context/endpoint-service-availability-zones.d.ts +22 -0
- package/lib/context/endpoint-service-availability-zones.js +5 -0
- package/lib/context/generic.d.ts +4 -0
- package/lib/context/generic.js +8 -0
- package/lib/context/key.d.ts +9 -0
- package/lib/context/key.js +3 -0
- package/lib/context/load-balancer.d.ts +63 -0
- package/lib/context/load-balancer.js +22 -0
- package/lib/context/security-group.d.ts +15 -0
- package/lib/context/security-group.js +3 -0
- package/lib/context/vpc.d.ts +152 -0
- package/lib/context/vpc.js +18 -0
- package/lib/environment.d.ts +24 -0
- package/lib/environment.js +40 -0
- package/lib/index.d.ts +21 -0
- package/lib/index.js +38 -0
- package/lib/metadata.d.ts +27 -0
- package/lib/metadata.js +14 -0
- package/lib/placeholders.d.ts +66 -0
- package/lib/placeholders.js +90 -0
- package/lib/private/error.d.ts +1 -0
- package/lib/private/error.js +47 -0
- package/lib/private/toposort.d.ts +11 -0
- package/lib/private/toposort.js +35 -0
- package/node_modules/jsonschema/.editorconfig +10 -0
- package/node_modules/jsonschema/LICENSE +21 -0
- package/node_modules/jsonschema/README.md +421 -0
- package/node_modules/jsonschema/lib/attribute.js +978 -0
- package/node_modules/jsonschema/lib/helpers.js +390 -0
- package/node_modules/jsonschema/lib/index.d.ts +142 -0
- package/node_modules/jsonschema/lib/index.js +15 -0
- package/node_modules/jsonschema/lib/scan.js +75 -0
- package/node_modules/jsonschema/lib/validator.js +336 -0
- package/node_modules/jsonschema/package.json +42 -0
- package/node_modules/semver/LICENSE +15 -0
- package/node_modules/semver/README.md +664 -0
- package/node_modules/semver/bin/semver.js +191 -0
- package/node_modules/semver/classes/comparator.js +143 -0
- package/node_modules/semver/classes/index.js +7 -0
- package/node_modules/semver/classes/range.js +557 -0
- package/node_modules/semver/classes/semver.js +333 -0
- package/node_modules/semver/functions/clean.js +8 -0
- package/node_modules/semver/functions/cmp.js +54 -0
- package/node_modules/semver/functions/coerce.js +62 -0
- package/node_modules/semver/functions/compare-build.js +9 -0
- package/node_modules/semver/functions/compare-loose.js +5 -0
- package/node_modules/semver/functions/compare.js +7 -0
- package/node_modules/semver/functions/diff.js +60 -0
- package/node_modules/semver/functions/eq.js +5 -0
- package/node_modules/semver/functions/gt.js +5 -0
- package/node_modules/semver/functions/gte.js +5 -0
- package/node_modules/semver/functions/inc.js +21 -0
- package/node_modules/semver/functions/lt.js +5 -0
- package/node_modules/semver/functions/lte.js +5 -0
- package/node_modules/semver/functions/major.js +5 -0
- package/node_modules/semver/functions/minor.js +5 -0
- package/node_modules/semver/functions/neq.js +5 -0
- package/node_modules/semver/functions/parse.js +18 -0
- package/node_modules/semver/functions/patch.js +5 -0
- package/node_modules/semver/functions/prerelease.js +8 -0
- package/node_modules/semver/functions/rcompare.js +5 -0
- package/node_modules/semver/functions/rsort.js +5 -0
- package/node_modules/semver/functions/satisfies.js +12 -0
- package/node_modules/semver/functions/sort.js +5 -0
- package/node_modules/semver/functions/valid.js +8 -0
- package/node_modules/semver/index.js +91 -0
- package/node_modules/semver/internal/constants.js +37 -0
- package/node_modules/semver/internal/debug.js +11 -0
- package/node_modules/semver/internal/identifiers.js +29 -0
- package/node_modules/semver/internal/lrucache.js +42 -0
- package/node_modules/semver/internal/parse-options.js +17 -0
- package/node_modules/semver/internal/re.js +223 -0
- package/node_modules/semver/package.json +78 -0
- package/node_modules/semver/preload.js +4 -0
- package/node_modules/semver/range.bnf +16 -0
- package/node_modules/semver/ranges/gtr.js +6 -0
- package/node_modules/semver/ranges/intersects.js +9 -0
- package/node_modules/semver/ranges/ltr.js +6 -0
- package/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/node_modules/semver/ranges/min-version.js +63 -0
- package/node_modules/semver/ranges/outside.js +82 -0
- package/node_modules/semver/ranges/simplify.js +49 -0
- package/node_modules/semver/ranges/subset.js +249 -0
- package/node_modules/semver/ranges/to-comparators.js +10 -0
- package/node_modules/semver/ranges/valid.js +13 -0
- package/package.json +80 -6
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZWN1cml0eS1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBkaXNjb3ZlcmVkIFNlY3VyaXR5R3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cENvbnRleHRSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXAncyBpZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzZWN1cml0eSBncm91cCBhbGxvd3MgYWxsIG91dGJvdW5kIHRyYWZmaWMuIFRoaXMgd2lsbCBiZSB0cnVlXG4gICAqIHdoZW4gdGhlIHNlY3VyaXR5IGdyb3VwIGhhcyBhbGwtcHJvdG9jb2wgZWdyZXNzIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBib3RoXG4gICAqIGAwLjAuMC4wLzBgIGFuZCBgOjovMGAuXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The type of subnet group.
|
|
3
|
+
* Same as SubnetType in the aws-cdk-lib/aws-ec2 package,
|
|
4
|
+
* but we can't use that because of cyclical dependencies.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum VpcSubnetGroupType {
|
|
7
|
+
/** Public subnet group type. */
|
|
8
|
+
PUBLIC = "Public",
|
|
9
|
+
/** Private subnet group type. */
|
|
10
|
+
PRIVATE = "Private",
|
|
11
|
+
/** Isolated subnet group type. */
|
|
12
|
+
ISOLATED = "Isolated"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A subnet representation that the VPC provider uses.
|
|
16
|
+
*/
|
|
17
|
+
export interface VpcSubnet {
|
|
18
|
+
/** The identifier of the subnet. */
|
|
19
|
+
readonly subnetId: string;
|
|
20
|
+
/**
|
|
21
|
+
* The code of the availability zone this subnet is in
|
|
22
|
+
* (for example, 'us-west-2a').
|
|
23
|
+
*/
|
|
24
|
+
readonly availabilityZone: string;
|
|
25
|
+
/** The identifier of the route table for this subnet. */
|
|
26
|
+
readonly routeTableId: string;
|
|
27
|
+
/**
|
|
28
|
+
* CIDR range of the subnet
|
|
29
|
+
*
|
|
30
|
+
* @default - CIDR information not available
|
|
31
|
+
*/
|
|
32
|
+
readonly cidr?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A group of subnets returned by the VPC provider.
|
|
36
|
+
* The included subnets do NOT have to be symmetric!
|
|
37
|
+
*/
|
|
38
|
+
export interface VpcSubnetGroup {
|
|
39
|
+
/**
|
|
40
|
+
* The name of the subnet group,
|
|
41
|
+
* determined by looking at the tags of of the subnets
|
|
42
|
+
* that belong to it.
|
|
43
|
+
*/
|
|
44
|
+
readonly name: string;
|
|
45
|
+
/** The type of the subnet group. */
|
|
46
|
+
readonly type: VpcSubnetGroupType;
|
|
47
|
+
/**
|
|
48
|
+
* The subnets that are part of this group.
|
|
49
|
+
* There is no condition that the subnets have to be symmetric
|
|
50
|
+
* in the group.
|
|
51
|
+
*/
|
|
52
|
+
readonly subnets: VpcSubnet[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Properties of a discovered VPC
|
|
56
|
+
*/
|
|
57
|
+
export interface VpcContextResponse {
|
|
58
|
+
/**
|
|
59
|
+
* VPC id
|
|
60
|
+
*/
|
|
61
|
+
readonly vpcId: string;
|
|
62
|
+
/**
|
|
63
|
+
* VPC cidr
|
|
64
|
+
*
|
|
65
|
+
* @default - CIDR information not available
|
|
66
|
+
*/
|
|
67
|
+
readonly vpcCidrBlock?: string;
|
|
68
|
+
/**
|
|
69
|
+
* AZs
|
|
70
|
+
*/
|
|
71
|
+
readonly availabilityZones: string[];
|
|
72
|
+
/**
|
|
73
|
+
* IDs of all public subnets
|
|
74
|
+
*
|
|
75
|
+
* Element count: #(availabilityZones) · #(publicGroups)
|
|
76
|
+
*/
|
|
77
|
+
readonly publicSubnetIds?: string[];
|
|
78
|
+
/**
|
|
79
|
+
* Name of public subnet groups
|
|
80
|
+
*
|
|
81
|
+
* Element count: #(publicGroups)
|
|
82
|
+
*/
|
|
83
|
+
readonly publicSubnetNames?: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Route Table IDs of public subnet groups.
|
|
86
|
+
*
|
|
87
|
+
* Element count: #(availabilityZones) · #(publicGroups)
|
|
88
|
+
*/
|
|
89
|
+
readonly publicSubnetRouteTableIds?: string[];
|
|
90
|
+
/**
|
|
91
|
+
* IDs of all private subnets
|
|
92
|
+
*
|
|
93
|
+
* Element count: #(availabilityZones) · #(privateGroups)
|
|
94
|
+
*/
|
|
95
|
+
readonly privateSubnetIds?: string[];
|
|
96
|
+
/**
|
|
97
|
+
* Name of private subnet groups
|
|
98
|
+
*
|
|
99
|
+
* Element count: #(privateGroups)
|
|
100
|
+
*/
|
|
101
|
+
readonly privateSubnetNames?: string[];
|
|
102
|
+
/**
|
|
103
|
+
* Route Table IDs of private subnet groups.
|
|
104
|
+
*
|
|
105
|
+
* Element count: #(availabilityZones) · #(privateGroups)
|
|
106
|
+
*/
|
|
107
|
+
readonly privateSubnetRouteTableIds?: string[];
|
|
108
|
+
/**
|
|
109
|
+
* IDs of all isolated subnets
|
|
110
|
+
*
|
|
111
|
+
* Element count: #(availabilityZones) · #(isolatedGroups)
|
|
112
|
+
*/
|
|
113
|
+
readonly isolatedSubnetIds?: string[];
|
|
114
|
+
/**
|
|
115
|
+
* Name of isolated subnet groups
|
|
116
|
+
*
|
|
117
|
+
* Element count: #(isolatedGroups)
|
|
118
|
+
*/
|
|
119
|
+
readonly isolatedSubnetNames?: string[];
|
|
120
|
+
/**
|
|
121
|
+
* Route Table IDs of isolated subnet groups.
|
|
122
|
+
*
|
|
123
|
+
* Element count: #(availabilityZones) · #(isolatedGroups)
|
|
124
|
+
*/
|
|
125
|
+
readonly isolatedSubnetRouteTableIds?: string[];
|
|
126
|
+
/**
|
|
127
|
+
* The VPN gateway ID
|
|
128
|
+
*/
|
|
129
|
+
readonly vpnGatewayId?: string;
|
|
130
|
+
/**
|
|
131
|
+
* The subnet groups discovered for the given VPC.
|
|
132
|
+
* Unlike the above properties, this will include asymmetric subnets,
|
|
133
|
+
* if the VPC has any.
|
|
134
|
+
* This property will only be populated if `VpcContextQuery.returnAsymmetricSubnets`
|
|
135
|
+
* is true.
|
|
136
|
+
*
|
|
137
|
+
* @default - no subnet groups will be returned unless `VpcContextQuery.returnAsymmetricSubnets` is true
|
|
138
|
+
*/
|
|
139
|
+
readonly subnetGroups?: VpcSubnetGroup[];
|
|
140
|
+
/**
|
|
141
|
+
* The region in which the VPC is in.
|
|
142
|
+
*
|
|
143
|
+
* @default - Region of the parent stack
|
|
144
|
+
*/
|
|
145
|
+
readonly region?: string;
|
|
146
|
+
/**
|
|
147
|
+
* The ID of the AWS account that owns the VPC.
|
|
148
|
+
*
|
|
149
|
+
* @default the account id of the parent stack
|
|
150
|
+
*/
|
|
151
|
+
readonly ownerAccountId?: string;
|
|
152
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VpcSubnetGroupType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The type of subnet group.
|
|
6
|
+
* Same as SubnetType in the aws-cdk-lib/aws-ec2 package,
|
|
7
|
+
* but we can't use that because of cyclical dependencies.
|
|
8
|
+
*/
|
|
9
|
+
var VpcSubnetGroupType;
|
|
10
|
+
(function (VpcSubnetGroupType) {
|
|
11
|
+
/** Public subnet group type. */
|
|
12
|
+
VpcSubnetGroupType["PUBLIC"] = "Public";
|
|
13
|
+
/** Private subnet group type. */
|
|
14
|
+
VpcSubnetGroupType["PRIVATE"] = "Private";
|
|
15
|
+
/** Isolated subnet group type. */
|
|
16
|
+
VpcSubnetGroupType["ISOLATED"] = "Isolated";
|
|
17
|
+
})(VpcSubnetGroupType || (exports.VpcSubnetGroupType = VpcSubnetGroupType = {}));
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7O0dBSUc7QUFDSCxJQUFZLGtCQVNYO0FBVEQsV0FBWSxrQkFBa0I7SUFDNUIsZ0NBQWdDO0lBQ2hDLHVDQUFpQixDQUFBO0lBRWpCLGlDQUFpQztJQUNqQyx5Q0FBbUIsQ0FBQTtJQUVuQixrQ0FBa0M7SUFDbEMsMkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVRXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBUzdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgdHlwZSBvZiBzdWJuZXQgZ3JvdXAuXG4gKiBTYW1lIGFzIFN1Ym5ldFR5cGUgaW4gdGhlIGF3cy1jZGstbGliL2F3cy1lYzIgcGFja2FnZSxcbiAqIGJ1dCB3ZSBjYW4ndCB1c2UgdGhhdCBiZWNhdXNlIG9mIGN5Y2xpY2FsIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gVnBjU3VibmV0R3JvdXBUeXBlIHtcbiAgLyoqIFB1YmxpYyBzdWJuZXQgZ3JvdXAgdHlwZS4gKi9cbiAgUFVCTElDID0gJ1B1YmxpYycsXG5cbiAgLyoqIFByaXZhdGUgc3VibmV0IGdyb3VwIHR5cGUuICovXG4gIFBSSVZBVEUgPSAnUHJpdmF0ZScsXG5cbiAgLyoqIElzb2xhdGVkIHN1Ym5ldCBncm91cCB0eXBlLiAqL1xuICBJU09MQVRFRCA9ICdJc29sYXRlZCcsXG59XG5cbi8qKlxuICogQSBzdWJuZXQgcmVwcmVzZW50YXRpb24gdGhhdCB0aGUgVlBDIHByb3ZpZGVyIHVzZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjU3VibmV0IHtcbiAgLyoqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBzdWJuZXQuICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2RlIG9mIHRoZSBhdmFpbGFiaWxpdHkgem9uZSB0aGlzIHN1Ym5ldCBpcyBpblxuICAgKiAoZm9yIGV4YW1wbGUsICd1cy13ZXN0LTJhJykuXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhpcyBzdWJuZXQuICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIHJhbmdlIG9mIHRoZSBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBDSURSIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNpZHI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBncm91cCBvZiBzdWJuZXRzIHJldHVybmVkIGJ5IHRoZSBWUEMgcHJvdmlkZXIuXG4gKiBUaGUgaW5jbHVkZWQgc3VibmV0cyBkbyBOT1QgaGF2ZSB0byBiZSBzeW1tZXRyaWMhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjU3VibmV0R3JvdXAge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN1Ym5ldCBncm91cCxcbiAgICogZGV0ZXJtaW5lZCBieSBsb29raW5nIGF0IHRoZSB0YWdzIG9mIG9mIHRoZSBzdWJuZXRzXG4gICAqIHRoYXQgYmVsb25nIHRvIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgc3VibmV0IGdyb3VwLiAqL1xuICByZWFkb25seSB0eXBlOiBWcGNTdWJuZXRHcm91cFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBncm91cC5cbiAgICogVGhlcmUgaXMgbm8gY29uZGl0aW9uIHRoYXQgdGhlIHN1Ym5ldHMgaGF2ZSB0byBiZSBzeW1tZXRyaWNcbiAgICogaW4gdGhlIGdyb3VwLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0czogVnBjU3VibmV0W107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIGRpc2NvdmVyZWQgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29udGV4dFJlc3BvbnNlIHtcblxuICAvKipcbiAgICogVlBDIGlkXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWUEMgY2lkclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENJRFIgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjQ2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBWnNcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSURzIG9mIGFsbCBwdWJsaWMgc3VibmV0c1xuICAgKlxuICAgKiBFbGVtZW50IGNvdW50OiAjKGF2YWlsYWJpbGl0eVpvbmVzKSDCtyAjKHB1YmxpY0dyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY1N1Ym5ldElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHB1YmxpYyBzdWJuZXQgZ3JvdXBzXG4gICAqXG4gICAqIEVsZW1lbnQgY291bnQ6ICMocHVibGljR3JvdXBzKVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUm91dGUgVGFibGUgSURzIG9mIHB1YmxpYyBzdWJuZXQgZ3JvdXBzLlxuICAgKlxuICAgKiBFbGVtZW50IGNvdW50OiAjKGF2YWlsYWJpbGl0eVpvbmVzKSDCtyAjKHB1YmxpY0dyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY1N1Ym5ldFJvdXRlVGFibGVJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSURzIG9mIGFsbCBwcml2YXRlIHN1Ym5ldHNcbiAgICpcbiAgICogRWxlbWVudCBjb3VudDogIyhhdmFpbGFiaWxpdHlab25lcykgwrcgIyhwcml2YXRlR3JvdXBzKVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHByaXZhdGUgc3VibmV0IGdyb3Vwc1xuICAgKlxuICAgKiBFbGVtZW50IGNvdW50OiAjKHByaXZhdGVHcm91cHMpXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUm91dGUgVGFibGUgSURzIG9mIHByaXZhdGUgc3VibmV0IGdyb3Vwcy5cbiAgICpcbiAgICogRWxlbWVudCBjb3VudDogIyhhdmFpbGFiaWxpdHlab25lcykgwrcgIyhwcml2YXRlR3JvdXBzKVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldFJvdXRlVGFibGVJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSURzIG9mIGFsbCBpc29sYXRlZCBzdWJuZXRzXG4gICAqXG4gICAqIEVsZW1lbnQgY291bnQ6ICMoYXZhaWxhYmlsaXR5Wm9uZXMpIMK3ICMoaXNvbGF0ZWRHcm91cHMpXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZFN1Ym5ldElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGlzb2xhdGVkIHN1Ym5ldCBncm91cHNcbiAgICpcbiAgICogRWxlbWVudCBjb3VudDogIyhpc29sYXRlZEdyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUm91dGUgVGFibGUgSURzIG9mIGlzb2xhdGVkIHN1Ym5ldCBncm91cHMuXG4gICAqXG4gICAqIEVsZW1lbnQgY291bnQ6ICMoYXZhaWxhYmlsaXR5Wm9uZXMpIMK3ICMoaXNvbGF0ZWRHcm91cHMpXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZFN1Ym5ldFJvdXRlVGFibGVJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIFZQTiBnYXRld2F5IElEXG4gICAqL1xuICByZWFkb25seSB2cG5HYXRld2F5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgZ3JvdXBzIGRpc2NvdmVyZWQgZm9yIHRoZSBnaXZlbiBWUEMuXG4gICAqIFVubGlrZSB0aGUgYWJvdmUgcHJvcGVydGllcywgdGhpcyB3aWxsIGluY2x1ZGUgYXN5bW1ldHJpYyBzdWJuZXRzLFxuICAgKiBpZiB0aGUgVlBDIGhhcyBhbnkuXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IGJlIHBvcHVsYXRlZCBpZiBgVnBjQ29udGV4dFF1ZXJ5LnJldHVybkFzeW1tZXRyaWNTdWJuZXRzYFxuICAgKiBpcyB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN1Ym5ldCBncm91cHMgd2lsbCBiZSByZXR1cm5lZCB1bmxlc3MgYFZwY0NvbnRleHRRdWVyeS5yZXR1cm5Bc3ltbWV0cmljU3VibmV0c2AgaXMgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBzPzogVnBjU3VibmV0R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBpbiB3aGljaCB0aGUgVlBDIGlzIGluLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlZ2lvbiBvZiB0aGUgcGFyZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgQVdTIGFjY291bnQgdGhhdCBvd25zIHRoZSBWUEMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBhY2NvdW50IGlkIG9mIHRoZSBwYXJlbnQgc3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IG93bmVyQWNjb3VudElkPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Models an AWS execution environment, for use within the CDK toolkit.
|
|
3
|
+
*/
|
|
4
|
+
export interface Environment {
|
|
5
|
+
/** The arbitrary name of this environment (user-set, or at least user-meaningful) */
|
|
6
|
+
readonly name: string;
|
|
7
|
+
/** The AWS account this environment deploys into */
|
|
8
|
+
readonly account: string;
|
|
9
|
+
/** The AWS region name where this environment deploys into */
|
|
10
|
+
readonly region: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const UNKNOWN_ACCOUNT = "unknown-account";
|
|
13
|
+
export declare const UNKNOWN_REGION = "unknown-region";
|
|
14
|
+
export declare class EnvironmentUtils {
|
|
15
|
+
static parse(environment: string): Environment;
|
|
16
|
+
/**
|
|
17
|
+
* Build an environment object from an account and region
|
|
18
|
+
*/
|
|
19
|
+
static make(account: string, region: string): Environment;
|
|
20
|
+
/**
|
|
21
|
+
* Format an environment string from an account and region
|
|
22
|
+
*/
|
|
23
|
+
static format(account: string, region: string): string;
|
|
24
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnvironmentUtils = exports.UNKNOWN_REGION = exports.UNKNOWN_ACCOUNT = void 0;
|
|
4
|
+
const error_1 = require("./private/error");
|
|
5
|
+
/**
|
|
6
|
+
* Parser for the artifact environment field.
|
|
7
|
+
*
|
|
8
|
+
* Account validation is relaxed to allow account aliasing in the future.
|
|
9
|
+
*/
|
|
10
|
+
const AWS_ENV_REGEX = /aws\:\/\/([a-z0-9A-Z\-\@\.\_]+)\/([a-z\-0-9]+)/;
|
|
11
|
+
exports.UNKNOWN_ACCOUNT = 'unknown-account';
|
|
12
|
+
exports.UNKNOWN_REGION = 'unknown-region';
|
|
13
|
+
class EnvironmentUtils {
|
|
14
|
+
static parse(environment) {
|
|
15
|
+
const env = AWS_ENV_REGEX.exec(environment);
|
|
16
|
+
if (!env) {
|
|
17
|
+
throw new error_1.CloudAssemblyError(`Unable to parse environment specification "${environment}". ` +
|
|
18
|
+
'Expected format: aws://account/region');
|
|
19
|
+
}
|
|
20
|
+
const [, account, region] = env;
|
|
21
|
+
if (!account || !region) {
|
|
22
|
+
throw new error_1.CloudAssemblyError(`Invalid environment specification: ${environment}`);
|
|
23
|
+
}
|
|
24
|
+
return { account, region, name: environment };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build an environment object from an account and region
|
|
28
|
+
*/
|
|
29
|
+
static make(account, region) {
|
|
30
|
+
return { account, region, name: this.format(account, region) };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Format an environment string from an account and region
|
|
34
|
+
*/
|
|
35
|
+
static format(account, region) {
|
|
36
|
+
return `aws://${account}/${region}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.EnvironmentUtils = EnvironmentUtils;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUQ7QUFFckQ7Ozs7R0FJRztBQUNILE1BQU0sYUFBYSxHQUFHLGdEQUFnRCxDQUFDO0FBZ0IxRCxRQUFBLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztBQUNwQyxRQUFBLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUUvQyxNQUFhLGdCQUFnQjtJQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLFdBQW1CO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLDBCQUFrQixDQUMxQiw4Q0FBOEMsV0FBVyxLQUFLO2dCQUM5RCx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksMEJBQWtCLENBQUMsc0NBQXNDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQWUsRUFBRSxNQUFjO1FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBZSxFQUFFLE1BQWM7UUFDbEQsT0FBTyxTQUFTLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUE5QkQsNENBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xvdWRBc3NlbWJseUVycm9yIH0gZnJvbSAnLi9wcml2YXRlL2Vycm9yJztcblxuLyoqXG4gKiBQYXJzZXIgZm9yIHRoZSBhcnRpZmFjdCBlbnZpcm9ubWVudCBmaWVsZC5cbiAqXG4gKiBBY2NvdW50IHZhbGlkYXRpb24gaXMgcmVsYXhlZCB0byBhbGxvdyBhY2NvdW50IGFsaWFzaW5nIGluIHRoZSBmdXR1cmUuXG4gKi9cbmNvbnN0IEFXU19FTlZfUkVHRVggPSAvYXdzXFw6XFwvXFwvKFthLXowLTlBLVpcXC1cXEBcXC5cXF9dKylcXC8oW2EtelxcLTAtOV0rKS87XG5cbi8qKlxuICogTW9kZWxzIGFuIEFXUyBleGVjdXRpb24gZW52aXJvbm1lbnQsIGZvciB1c2Ugd2l0aGluIHRoZSBDREsgdG9vbGtpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKiBUaGUgYXJiaXRyYXJ5IG5hbWUgb2YgdGhpcyBlbnZpcm9ubWVudCAodXNlci1zZXQsIG9yIGF0IGxlYXN0IHVzZXItbWVhbmluZ2Z1bCkgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBUaGUgQVdTIGFjY291bnQgdGhpcyBlbnZpcm9ubWVudCBkZXBsb3lzIGludG8gKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgQVdTIHJlZ2lvbiBuYW1lIHdoZXJlIHRoaXMgZW52aXJvbm1lbnQgZGVwbG95cyBpbnRvICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgVU5LTk9XTl9BQ0NPVU5UID0gJ3Vua25vd24tYWNjb3VudCc7XG5leHBvcnQgY29uc3QgVU5LTk9XTl9SRUdJT04gPSAndW5rbm93bi1yZWdpb24nO1xuXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRVdGlscyB7XG4gIHB1YmxpYyBzdGF0aWMgcGFyc2UoZW52aXJvbm1lbnQ6IHN0cmluZyk6IEVudmlyb25tZW50IHtcbiAgICBjb25zdCBlbnYgPSBBV1NfRU5WX1JFR0VYLmV4ZWMoZW52aXJvbm1lbnQpO1xuICAgIGlmICghZW52KSB7XG4gICAgICB0aHJvdyBuZXcgQ2xvdWRBc3NlbWJseUVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGVudmlyb25tZW50IHNwZWNpZmljYXRpb24gXCIke2Vudmlyb25tZW50fVwiLiBgICtcbiAgICAgICAgJ0V4cGVjdGVkIGZvcm1hdDogYXdzOi8vYWNjb3VudC9yZWdpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBbLCBhY2NvdW50LCByZWdpb25dID0gZW52O1xuICAgIGlmICghYWNjb3VudCB8fCAhcmVnaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgQ2xvdWRBc3NlbWJseUVycm9yKGBJbnZhbGlkIGVudmlyb25tZW50IHNwZWNpZmljYXRpb246ICR7ZW52aXJvbm1lbnR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYWNjb3VudCwgcmVnaW9uLCBuYW1lOiBlbnZpcm9ubWVudCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIGVudmlyb25tZW50IG9iamVjdCBmcm9tIGFuIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYWtlKGFjY291bnQ6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcpOiBFbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHsgYWNjb3VudCwgcmVnaW9uLCBuYW1lOiB0aGlzLmZvcm1hdChhY2NvdW50LCByZWdpb24pIH07XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGFuIGVudmlyb25tZW50IHN0cmluZyBmcm9tIGFuIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JtYXQoYWNjb3VudDogc3RyaW5nLCByZWdpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3M6Ly8ke2FjY291bnR9LyR7cmVnaW9ufWA7XG4gIH1cbn1cbiJdfQ==
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export * from './context/vpc';
|
|
2
|
+
export * from './context/ami';
|
|
3
|
+
export * from './context/load-balancer';
|
|
4
|
+
export * from './context/availability-zones';
|
|
5
|
+
export * from './context/endpoint-service-availability-zones';
|
|
6
|
+
export * from './context/security-group';
|
|
7
|
+
export * from './context/key';
|
|
8
|
+
export * from './context/generic';
|
|
9
|
+
export * from './cloud-artifact';
|
|
10
|
+
import './cloud-artifact-aug';
|
|
11
|
+
export * from './artifacts/asset-manifest-artifact';
|
|
12
|
+
export * from './artifacts/cloudformation-artifact';
|
|
13
|
+
export * from './artifacts/tree-cloud-artifact';
|
|
14
|
+
export * from './artifacts/nested-cloud-assembly-artifact';
|
|
15
|
+
import './artifacts/nested-cloud-assembly-artifact-aug';
|
|
16
|
+
export * from './cloud-assembly';
|
|
17
|
+
export * from './assets';
|
|
18
|
+
export * from './metadata';
|
|
19
|
+
export * from './placeholders';
|
|
20
|
+
export * from './environment';
|
|
21
|
+
export * from './bootstrap';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __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("./context/vpc"), exports);
|
|
18
|
+
__exportStar(require("./context/ami"), exports);
|
|
19
|
+
__exportStar(require("./context/load-balancer"), exports);
|
|
20
|
+
__exportStar(require("./context/availability-zones"), exports);
|
|
21
|
+
__exportStar(require("./context/endpoint-service-availability-zones"), exports);
|
|
22
|
+
__exportStar(require("./context/security-group"), exports);
|
|
23
|
+
__exportStar(require("./context/key"), exports);
|
|
24
|
+
__exportStar(require("./context/generic"), exports);
|
|
25
|
+
__exportStar(require("./cloud-artifact"), exports);
|
|
26
|
+
require("./cloud-artifact-aug");
|
|
27
|
+
__exportStar(require("./artifacts/asset-manifest-artifact"), exports);
|
|
28
|
+
__exportStar(require("./artifacts/cloudformation-artifact"), exports);
|
|
29
|
+
__exportStar(require("./artifacts/tree-cloud-artifact"), exports);
|
|
30
|
+
__exportStar(require("./artifacts/nested-cloud-assembly-artifact"), exports);
|
|
31
|
+
require("./artifacts/nested-cloud-assembly-artifact-aug");
|
|
32
|
+
__exportStar(require("./cloud-assembly"), exports);
|
|
33
|
+
__exportStar(require("./assets"), exports);
|
|
34
|
+
__exportStar(require("./metadata"), exports);
|
|
35
|
+
__exportStar(require("./placeholders"), exports);
|
|
36
|
+
__exportStar(require("./environment"), exports);
|
|
37
|
+
__exportStar(require("./bootstrap"), exports);
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQThCO0FBQzlCLGdEQUE4QjtBQUM5QiwwREFBd0M7QUFDeEMsK0RBQTZDO0FBQzdDLGdGQUE4RDtBQUM5RCwyREFBeUM7QUFDekMsZ0RBQThCO0FBQzlCLG9EQUFrQztBQUNsQyxtREFBaUM7QUFDakMsZ0NBQThCO0FBQzlCLHNFQUFvRDtBQUNwRCxzRUFBb0Q7QUFDcEQsa0VBQWdEO0FBQ2hELDZFQUEyRDtBQUMzRCwwREFBd0Q7QUFDeEQsbURBQWlDO0FBQ2pDLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0IsaURBQStCO0FBQy9CLGdEQUE4QjtBQUM5Qiw4Q0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRleHQvdnBjJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC9hbWknO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0L2xvYWQtYmFsYW5jZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0L2F2YWlsYWJpbGl0eS16b25lcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQvZW5kcG9pbnQtc2VydmljZS1hdmFpbGFiaWxpdHktem9uZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0L3NlY3VyaXR5LWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC9rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0L2dlbmVyaWMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG91ZC1hcnRpZmFjdCc7XG5pbXBvcnQgJy4vY2xvdWQtYXJ0aWZhY3QtYXVnJztcbmV4cG9ydCAqIGZyb20gJy4vYXJ0aWZhY3RzL2Fzc2V0LW1hbmlmZXN0LWFydGlmYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vYXJ0aWZhY3RzL2Nsb3VkZm9ybWF0aW9uLWFydGlmYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vYXJ0aWZhY3RzL3RyZWUtY2xvdWQtYXJ0aWZhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdHMvbmVzdGVkLWNsb3VkLWFzc2VtYmx5LWFydGlmYWN0JztcbmltcG9ydCAnLi9hcnRpZmFjdHMvbmVzdGVkLWNsb3VkLWFzc2VtYmx5LWFydGlmYWN0LWF1Zyc7XG5leHBvcnQgKiBmcm9tICcuL2Nsb3VkLWFzc2VtYmx5JztcbmV4cG9ydCAqIGZyb20gJy4vYXNzZXRzJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0YWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9wbGFjZWhvbGRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb3RzdHJhcCc7XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type * as cxschema from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
+
/**
|
|
3
|
+
* The key used when CDK path is embedded in **CloudFormation template** metadata (not cdk metadata).
|
|
4
|
+
*/
|
|
5
|
+
export declare const PATH_METADATA_KEY = "aws:cdk:path";
|
|
6
|
+
export declare enum SynthesisMessageLevel {
|
|
7
|
+
INFO = "info",
|
|
8
|
+
WARNING = "warning",
|
|
9
|
+
ERROR = "error"
|
|
10
|
+
}
|
|
11
|
+
export interface MetadataEntryResult extends cxschema.MetadataEntry {
|
|
12
|
+
/**
|
|
13
|
+
* The path in which this entry was defined.
|
|
14
|
+
*/
|
|
15
|
+
readonly path: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Metadata associated with the objects in the stack's Construct tree
|
|
19
|
+
*/
|
|
20
|
+
export type StackMetadata = {
|
|
21
|
+
[path: string]: cxschema.MetadataEntry[];
|
|
22
|
+
};
|
|
23
|
+
export interface SynthesisMessage {
|
|
24
|
+
readonly level: SynthesisMessageLevel;
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly entry: cxschema.MetadataEntry;
|
|
27
|
+
}
|
package/lib/metadata.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SynthesisMessageLevel = exports.PATH_METADATA_KEY = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The key used when CDK path is embedded in **CloudFormation template** metadata (not cdk metadata).
|
|
6
|
+
*/
|
|
7
|
+
exports.PATH_METADATA_KEY = 'aws:cdk:path';
|
|
8
|
+
var SynthesisMessageLevel;
|
|
9
|
+
(function (SynthesisMessageLevel) {
|
|
10
|
+
SynthesisMessageLevel["INFO"] = "info";
|
|
11
|
+
SynthesisMessageLevel["WARNING"] = "warning";
|
|
12
|
+
SynthesisMessageLevel["ERROR"] = "error";
|
|
13
|
+
})(SynthesisMessageLevel || (exports.SynthesisMessageLevel = SynthesisMessageLevel = {}));
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRWhELElBQVkscUJBSVg7QUFKRCxXQUFZLHFCQUFxQjtJQUMvQixzQ0FBYSxDQUFBO0lBQ2IsNENBQW1CLENBQUE7SUFDbkIsd0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFJaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5cbi8qKlxuICogVGhlIGtleSB1c2VkIHdoZW4gQ0RLIHBhdGggaXMgZW1iZWRkZWQgaW4gKipDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSoqIG1ldGFkYXRhIChub3QgY2RrIG1ldGFkYXRhKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBBVEhfTUVUQURBVEFfS0VZID0gJ2F3czpjZGs6cGF0aCc7XG5cbmV4cG9ydCBlbnVtIFN5bnRoZXNpc01lc3NhZ2VMZXZlbCB7XG4gIElORk8gPSAnaW5mbycsXG4gIFdBUk5JTkcgPSAnd2FybmluZycsXG4gIEVSUk9SID0gJ2Vycm9yJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YUVudHJ5UmVzdWx0IGV4dGVuZHMgY3hzY2hlbWEuTWV0YWRhdGFFbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbiB3aGljaCB0aGlzIGVudHJ5IHdhcyBkZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhY2sncyBDb25zdHJ1Y3QgdHJlZVxuICovXG5leHBvcnQgdHlwZSBTdGFja01ldGFkYXRhID0geyBbcGF0aDogc3RyaW5nXTogY3hzY2hlbWEuTWV0YWRhdGFFbnRyeVtdIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhlc2lzTWVzc2FnZSB7XG4gIHJlYWRvbmx5IGxldmVsOiBTeW50aGVzaXNNZXNzYWdlTGV2ZWw7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudHJ5OiBjeHNjaGVtYS5NZXRhZGF0YUVudHJ5O1xufVxuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholders which can be used manifests
|
|
3
|
+
*
|
|
4
|
+
* These can occur both in the Asset Manifest as well as the general
|
|
5
|
+
* Cloud Assembly manifest.
|
|
6
|
+
*/
|
|
7
|
+
export declare class EnvironmentPlaceholders {
|
|
8
|
+
/**
|
|
9
|
+
* Insert this into the destination fields to be replaced with the current region
|
|
10
|
+
*/
|
|
11
|
+
static readonly CURRENT_REGION = "${AWS::Region}";
|
|
12
|
+
/**
|
|
13
|
+
* Insert this into the destination fields to be replaced with the current account
|
|
14
|
+
*/
|
|
15
|
+
static readonly CURRENT_ACCOUNT = "${AWS::AccountId}";
|
|
16
|
+
/**
|
|
17
|
+
* Insert this into the destination fields to be replaced with the current partition
|
|
18
|
+
*/
|
|
19
|
+
static readonly CURRENT_PARTITION = "${AWS::Partition}";
|
|
20
|
+
/**
|
|
21
|
+
* Replace the environment placeholders in all strings found in a complex object.
|
|
22
|
+
*
|
|
23
|
+
* Duplicated between cdk-assets and aws-cdk CLI because we don't have a good single place to put it
|
|
24
|
+
* (they're nominally independent tools).
|
|
25
|
+
*/
|
|
26
|
+
static replace(object: any, values: EnvironmentPlaceholderValues): any;
|
|
27
|
+
/**
|
|
28
|
+
* Like 'replace', but asynchronous
|
|
29
|
+
*/
|
|
30
|
+
static replaceAsync(object: any, provider: IEnvironmentPlaceholderProvider): Promise<any>;
|
|
31
|
+
private static recurse;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Return the appropriate values for the environment placeholders
|
|
35
|
+
*/
|
|
36
|
+
export interface EnvironmentPlaceholderValues {
|
|
37
|
+
/**
|
|
38
|
+
* Return the region
|
|
39
|
+
*/
|
|
40
|
+
readonly region: string;
|
|
41
|
+
/**
|
|
42
|
+
* Return the account
|
|
43
|
+
*/
|
|
44
|
+
readonly accountId: string;
|
|
45
|
+
/**
|
|
46
|
+
* Return the partition
|
|
47
|
+
*/
|
|
48
|
+
readonly partition: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Return the appropriate values for the environment placeholders
|
|
52
|
+
*/
|
|
53
|
+
export interface IEnvironmentPlaceholderProvider {
|
|
54
|
+
/**
|
|
55
|
+
* Return the region
|
|
56
|
+
*/
|
|
57
|
+
region(): Promise<string>;
|
|
58
|
+
/**
|
|
59
|
+
* Return the account
|
|
60
|
+
*/
|
|
61
|
+
accountId(): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Return the partition
|
|
64
|
+
*/
|
|
65
|
+
partition(): Promise<string>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnvironmentPlaceholders = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Placeholders which can be used manifests
|
|
6
|
+
*
|
|
7
|
+
* These can occur both in the Asset Manifest as well as the general
|
|
8
|
+
* Cloud Assembly manifest.
|
|
9
|
+
*/
|
|
10
|
+
class EnvironmentPlaceholders {
|
|
11
|
+
/**
|
|
12
|
+
* Replace the environment placeholders in all strings found in a complex object.
|
|
13
|
+
*
|
|
14
|
+
* Duplicated between cdk-assets and aws-cdk CLI because we don't have a good single place to put it
|
|
15
|
+
* (they're nominally independent tools).
|
|
16
|
+
*/
|
|
17
|
+
static replace(object, values) {
|
|
18
|
+
return this.recurse(object, value => {
|
|
19
|
+
value = replaceAll(value, EnvironmentPlaceholders.CURRENT_REGION, values.region);
|
|
20
|
+
value = replaceAll(value, EnvironmentPlaceholders.CURRENT_ACCOUNT, values.accountId);
|
|
21
|
+
value = replaceAll(value, EnvironmentPlaceholders.CURRENT_PARTITION, values.partition);
|
|
22
|
+
return value;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Like 'replace', but asynchronous
|
|
27
|
+
*/
|
|
28
|
+
static async replaceAsync(object, provider) {
|
|
29
|
+
let needRegion = false;
|
|
30
|
+
let needAccountId = false;
|
|
31
|
+
let needPartition = false;
|
|
32
|
+
this.recurse(object, value => {
|
|
33
|
+
if (value.indexOf(EnvironmentPlaceholders.CURRENT_REGION) > 1) {
|
|
34
|
+
needRegion = true;
|
|
35
|
+
}
|
|
36
|
+
if (value.indexOf(EnvironmentPlaceholders.CURRENT_ACCOUNT) > 1) {
|
|
37
|
+
needAccountId = true;
|
|
38
|
+
}
|
|
39
|
+
if (value.indexOf(EnvironmentPlaceholders.CURRENT_PARTITION) > 1) {
|
|
40
|
+
needPartition = true;
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
});
|
|
44
|
+
const region = needRegion ? await provider.region() : undefined;
|
|
45
|
+
const accountId = needAccountId ? await provider.accountId() : undefined;
|
|
46
|
+
const partition = needPartition ? await provider.partition() : undefined;
|
|
47
|
+
return this.recurse(object, value => {
|
|
48
|
+
value = replaceAll(value, EnvironmentPlaceholders.CURRENT_REGION, region ?? 'WONTHAPPEN');
|
|
49
|
+
value = replaceAll(value, EnvironmentPlaceholders.CURRENT_ACCOUNT, accountId ?? 'WONTHAPPEN');
|
|
50
|
+
value = replaceAll(value, EnvironmentPlaceholders.CURRENT_PARTITION, partition ?? 'WONTHAPPEN');
|
|
51
|
+
return value;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
static recurse(value, cb) {
|
|
55
|
+
if (typeof value === 'string') {
|
|
56
|
+
return cb(value);
|
|
57
|
+
}
|
|
58
|
+
if (typeof value !== 'object' || value === null) {
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
if (Array.isArray(value)) {
|
|
62
|
+
return value.map(x => this.recurse(x, cb));
|
|
63
|
+
}
|
|
64
|
+
const ret = {};
|
|
65
|
+
for (const [key, inner] of Object.entries(value)) {
|
|
66
|
+
ret[key] = this.recurse(inner, cb);
|
|
67
|
+
}
|
|
68
|
+
return ret;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.EnvironmentPlaceholders = EnvironmentPlaceholders;
|
|
72
|
+
/**
|
|
73
|
+
* Insert this into the destination fields to be replaced with the current region
|
|
74
|
+
*/
|
|
75
|
+
EnvironmentPlaceholders.CURRENT_REGION = '${AWS::Region}';
|
|
76
|
+
/**
|
|
77
|
+
* Insert this into the destination fields to be replaced with the current account
|
|
78
|
+
*/
|
|
79
|
+
EnvironmentPlaceholders.CURRENT_ACCOUNT = '${AWS::AccountId}';
|
|
80
|
+
/**
|
|
81
|
+
* Insert this into the destination fields to be replaced with the current partition
|
|
82
|
+
*/
|
|
83
|
+
EnvironmentPlaceholders.CURRENT_PARTITION = '${AWS::Partition}';
|
|
84
|
+
/**
|
|
85
|
+
* A "replace-all" function that doesn't require us escaping a literal string to a regex
|
|
86
|
+
*/
|
|
87
|
+
function replaceAll(s, search, replace) {
|
|
88
|
+
return s.split(search).join(replace);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGxhY2Vob2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7OztHQUtHO0FBQ0gsTUFBYSx1QkFBdUI7SUFnQmxDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsTUFBb0M7UUFDckUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNsQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckYsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsdUJBQXVCLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFXLEVBQUUsUUFBeUM7UUFDckYsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6RSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFekUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNsQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsTUFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDO1lBQzFGLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxTQUFTLElBQUksWUFBWSxDQUFDLENBQUM7WUFDOUYsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsdUJBQXVCLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxJQUFJLFlBQVksQ0FBQyxDQUFDO1lBQ2hHLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFVLEVBQUUsRUFBeUI7UUFDMUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUF3QixFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFoRkgsMERBaUZDO0FBaEZDOztHQUVHO0FBQ29CLHNDQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFFekQ7O0dBRUc7QUFDb0IsdUNBQWUsR0FBRyxtQkFBbUIsQ0FBQztBQUU3RDs7R0FFRztBQUNvQix5Q0FBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQTZHakU7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxDQUFTLEVBQUUsTUFBYyxFQUFFLE9BQWU7SUFDNUQsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQbGFjZWhvbGRlcnMgd2hpY2ggY2FuIGJlIHVzZWQgbWFuaWZlc3RzXG4gKlxuICogVGhlc2UgY2FuIG9jY3VyIGJvdGggaW4gdGhlIEFzc2V0IE1hbmlmZXN0IGFzIHdlbGwgYXMgdGhlIGdlbmVyYWxcbiAqIENsb3VkIEFzc2VtYmx5IG1hbmlmZXN0LlxuICovXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMge1xuICAvKipcbiAgICogSW5zZXJ0IHRoaXMgaW50byB0aGUgZGVzdGluYXRpb24gZmllbGRzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgcmVnaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENVUlJFTlRfUkVHSU9OID0gJyR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogSW5zZXJ0IHRoaXMgaW50byB0aGUgZGVzdGluYXRpb24gZmllbGRzIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgYWNjb3VudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDVVJSRU5UX0FDQ09VTlQgPSAnJHtBV1M6OkFjY291bnRJZH0nO1xuXG4gIC8qKlxuICAgKiBJbnNlcnQgdGhpcyBpbnRvIHRoZSBkZXN0aW5hdGlvbiBmaWVsZHMgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgY3VycmVudCBwYXJ0aXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ1VSUkVOVF9QQVJUSVRJT04gPSAnJHtBV1M6OlBhcnRpdGlvbn0nO1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnMgaW4gYWxsIHN0cmluZ3MgZm91bmQgaW4gYSBjb21wbGV4IG9iamVjdC5cbiAgICpcbiAgICogRHVwbGljYXRlZCBiZXR3ZWVuIGNkay1hc3NldHMgYW5kIGF3cy1jZGsgQ0xJIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgc2luZ2xlIHBsYWNlIHRvIHB1dCBpdFxuICAgKiAodGhleSdyZSBub21pbmFsbHkgaW5kZXBlbmRlbnQgdG9vbHMpLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZXBsYWNlKG9iamVjdDogYW55LCB2YWx1ZXM6IEVudmlyb25tZW50UGxhY2Vob2xkZXJWYWx1ZXMpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlY3Vyc2Uob2JqZWN0LCB2YWx1ZSA9PiB7XG4gICAgICB2YWx1ZSA9IHJlcGxhY2VBbGwodmFsdWUsIEVudmlyb25tZW50UGxhY2Vob2xkZXJzLkNVUlJFTlRfUkVHSU9OLCB2YWx1ZXMucmVnaW9uKTtcbiAgICAgIHZhbHVlID0gcmVwbGFjZUFsbCh2YWx1ZSwgRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMuQ1VSUkVOVF9BQ0NPVU5ULCB2YWx1ZXMuYWNjb3VudElkKTtcbiAgICAgIHZhbHVlID0gcmVwbGFjZUFsbCh2YWx1ZSwgRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMuQ1VSUkVOVF9QQVJUSVRJT04sIHZhbHVlcy5wYXJ0aXRpb24pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpa2UgJ3JlcGxhY2UnLCBidXQgYXN5bmNocm9ub3VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlcGxhY2VBc3luYyhvYmplY3Q6IGFueSwgcHJvdmlkZXI6IElFbnZpcm9ubWVudFBsYWNlaG9sZGVyUHJvdmlkZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBuZWVkUmVnaW9uID0gZmFsc2U7XG4gICAgbGV0IG5lZWRBY2NvdW50SWQgPSBmYWxzZTtcbiAgICBsZXQgbmVlZFBhcnRpdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5yZWN1cnNlKG9iamVjdCwgdmFsdWUgPT4ge1xuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMuQ1VSUkVOVF9SRUdJT04pID4gMSkge1xuICAgICAgICBuZWVkUmVnaW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKEVudmlyb25tZW50UGxhY2Vob2xkZXJzLkNVUlJFTlRfQUNDT1VOVCkgPiAxKSB7XG4gICAgICAgIG5lZWRBY2NvdW50SWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlLmluZGV4T2YoRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMuQ1VSUkVOVF9QQVJUSVRJT04pID4gMSkge1xuICAgICAgICBuZWVkUGFydGl0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlZ2lvbiA9IG5lZWRSZWdpb24gPyBhd2FpdCBwcm92aWRlci5yZWdpb24oKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBuZWVkQWNjb3VudElkID8gYXdhaXQgcHJvdmlkZXIuYWNjb3VudElkKCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGFydGl0aW9uID0gbmVlZFBhcnRpdGlvbiA/IGF3YWl0IHByb3ZpZGVyLnBhcnRpdGlvbigpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHRoaXMucmVjdXJzZShvYmplY3QsIHZhbHVlID0+IHtcbiAgICAgIHZhbHVlID0gcmVwbGFjZUFsbCh2YWx1ZSwgRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMuQ1VSUkVOVF9SRUdJT04sIHJlZ2lvbiA/PyAnV09OVEhBUFBFTicpO1xuICAgICAgdmFsdWUgPSByZXBsYWNlQWxsKHZhbHVlLCBFbnZpcm9ubWVudFBsYWNlaG9sZGVycy5DVVJSRU5UX0FDQ09VTlQsIGFjY291bnRJZCA/PyAnV09OVEhBUFBFTicpO1xuICAgICAgdmFsdWUgPSByZXBsYWNlQWxsKHZhbHVlLCBFbnZpcm9ubWVudFBsYWNlaG9sZGVycy5DVVJSRU5UX1BBUlRJVElPTiwgcGFydGl0aW9uID8/ICdXT05USEFQUEVOJyk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWN1cnNlKHZhbHVlOiBhbnksIGNiOiAoeDogc3RyaW5nKSA9PiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY2IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoeCA9PiB0aGlzLnJlY3Vyc2UoeCwgY2IpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGlubmVyXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgIHJldFtrZXldID0gdGhpcy5yZWN1cnNlKGlubmVyLCBjYik7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgdGhlIGVudmlyb25tZW50IHBsYWNlaG9sZGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50UGxhY2Vob2xkZXJWYWx1ZXMge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHBhcnRpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHRoZSBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRW52aXJvbm1lbnRQbGFjZWhvbGRlclByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcmVnaW9uXG4gICAqL1xuICByZWdpb24oKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGFjY291bnRcbiAgICovXG4gIGFjY291bnRJZCgpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcGFydGl0aW9uXG4gICAqL1xuICBwYXJ0aXRpb24oKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG4vKipcbiAqIEEgXCJyZXBsYWNlLWFsbFwiIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXF1aXJlIHVzIGVzY2FwaW5nIGEgbGl0ZXJhbCBzdHJpbmcgdG8gYSByZWdleFxuICovXG5mdW5jdGlvbiByZXBsYWNlQWxsKHM6IHN0cmluZywgc2VhcmNoOiBzdHJpbmcsIHJlcGxhY2U6IHN0cmluZykge1xuICByZXR1cm4gcy5zcGxpdChzZWFyY2gpLmpvaW4ocmVwbGFjZSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var _CloudAssemblyError_time;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CloudAssemblyError = void 0;
|
|
16
|
+
const ASSEMBLY_ERROR_SYMBOL = Symbol.for('@aws-cdk/cx-api.CloudAssemblyError');
|
|
17
|
+
/**
|
|
18
|
+
* A CloudAssemblyError is thrown for issues with the synthesized CloudAssembly.
|
|
19
|
+
*
|
|
20
|
+
* These are typically exceptions that are unexpected for end-users,
|
|
21
|
+
* and should only occur during abnormal operation, e.g. when the synthesis
|
|
22
|
+
* didn't fully complete.
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
class CloudAssemblyError extends Error {
|
|
27
|
+
/**
|
|
28
|
+
* The time the error was thrown.
|
|
29
|
+
*/
|
|
30
|
+
get time() {
|
|
31
|
+
return __classPrivateFieldGet(this, _CloudAssemblyError_time, "f");
|
|
32
|
+
}
|
|
33
|
+
get type() {
|
|
34
|
+
return 'assembly';
|
|
35
|
+
}
|
|
36
|
+
constructor(msg) {
|
|
37
|
+
super(msg);
|
|
38
|
+
_CloudAssemblyError_time.set(this, void 0);
|
|
39
|
+
Object.setPrototypeOf(this, CloudAssemblyError.prototype);
|
|
40
|
+
Object.defineProperty(this, ASSEMBLY_ERROR_SYMBOL, { value: true });
|
|
41
|
+
this.name = new.target.name;
|
|
42
|
+
__classPrivateFieldSet(this, _CloudAssemblyError_time, new Date().toISOString(), "f");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.CloudAssemblyError = CloudAssemblyError;
|
|
46
|
+
_CloudAssemblyError_time = new WeakMap();
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUUvRTs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsS0FBSztJQUczQzs7T0FFRztJQUNILElBQVcsSUFBSTtRQUNiLE9BQU8sdUJBQUEsSUFBSSxnQ0FBTSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQWRiLDJDQUFjO1FBZ0JaLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1Qix1QkFBQSxJQUFJLDRCQUFTLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLE1BQUEsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUF2QkQsZ0RBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQVNTRU1CTFlfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvY3gtYXBpLkNsb3VkQXNzZW1ibHlFcnJvcicpO1xuXG4vKipcbiAqIEEgQ2xvdWRBc3NlbWJseUVycm9yIGlzIHRocm93biBmb3IgaXNzdWVzIHdpdGggdGhlIHN5bnRoZXNpemVkIENsb3VkQXNzZW1ibHkuXG4gKlxuICogVGhlc2UgYXJlIHR5cGljYWxseSBleGNlcHRpb25zIHRoYXQgYXJlIHVuZXhwZWN0ZWQgZm9yIGVuZC11c2VycyxcbiAqIGFuZCBzaG91bGQgb25seSBvY2N1ciBkdXJpbmcgYWJub3JtYWwgb3BlcmF0aW9uLCBlLmcuIHdoZW4gdGhlIHN5bnRoZXNpc1xuICogZGlkbid0IGZ1bGx5IGNvbXBsZXRlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRBc3NlbWJseUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAjdGltZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSB0aGUgZXJyb3Igd2FzIHRocm93bi5cbiAgICovXG4gIHB1YmxpYyBnZXQgdGltZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiN0aW1lO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6ICdhc3NlbWJseScge1xuICAgIHJldHVybiAnYXNzZW1ibHknO1xuICB9XG5cbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtc2cpO1xuXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENsb3VkQXNzZW1ibHlFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBU1NFTUJMWV9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLm5hbWUgPSBuZXcudGFyZ2V0Lm5hbWU7XG4gICAgdGhpcy4jdGltZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type KeyFunc<T> = (x: T) => string;
|
|
2
|
+
export type DepFunc<T> = (x: T) => string[];
|
|
3
|
+
/**
|
|
4
|
+
* Return a topological sort of all elements of xs, according to the given dependency functions
|
|
5
|
+
*
|
|
6
|
+
* Dependencies outside the referenced set are ignored.
|
|
7
|
+
*
|
|
8
|
+
* Not a stable sort, but in order to keep the order as stable as possible, we'll sort by key
|
|
9
|
+
* among elements of equal precedence.
|
|
10
|
+
*/
|
|
11
|
+
export declare function topologicalSort<T>(xs: Iterable<T>, keyFn: KeyFunc<T>, depFn: DepFunc<T>): T[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topologicalSort = topologicalSort;
|
|
4
|
+
const error_1 = require("./error");
|
|
5
|
+
/**
|
|
6
|
+
* Return a topological sort of all elements of xs, according to the given dependency functions
|
|
7
|
+
*
|
|
8
|
+
* Dependencies outside the referenced set are ignored.
|
|
9
|
+
*
|
|
10
|
+
* Not a stable sort, but in order to keep the order as stable as possible, we'll sort by key
|
|
11
|
+
* among elements of equal precedence.
|
|
12
|
+
*/
|
|
13
|
+
function topologicalSort(xs, keyFn, depFn) {
|
|
14
|
+
const remaining = new Map();
|
|
15
|
+
for (const element of xs) {
|
|
16
|
+
const key = keyFn(element);
|
|
17
|
+
remaining.set(key, { key, element, dependencies: depFn(element) });
|
|
18
|
+
}
|
|
19
|
+
const ret = new Array();
|
|
20
|
+
while (remaining.size > 0) {
|
|
21
|
+
// All elements with no more deps in the set can be ordered
|
|
22
|
+
const selectable = Array.from(remaining.values()).filter(e => e.dependencies.every(d => !remaining.has(d)));
|
|
23
|
+
selectable.sort((a, b) => a.key < b.key ? -1 : b.key < a.key ? 1 : 0);
|
|
24
|
+
for (const selected of selectable) {
|
|
25
|
+
ret.push(selected.element);
|
|
26
|
+
remaining.delete(selected.key);
|
|
27
|
+
}
|
|
28
|
+
// If we didn't make any progress, we got stuck
|
|
29
|
+
if (selectable.length === 0) {
|
|
30
|
+
throw new error_1.CloudAssemblyError(`Could not determine ordering between: ${Array.from(remaining.keys()).join(', ')}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return ret;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wb3NvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b3Bvc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLDBDQTBCQztBQXZDRCxtQ0FBNkM7QUFLN0M7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGVBQWUsQ0FBSSxFQUFlLEVBQUUsS0FBaUIsRUFBRSxLQUFpQjtJQUN0RixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztJQUNwRCxLQUFLLE1BQU0sT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsT0FBTyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFCLDJEQUEyRDtRQUMzRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1RyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRFLEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELCtDQUErQztRQUMvQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLDBCQUFrQixDQUFDLHlDQUF5QyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkgsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbG91ZEFzc2VtYmx5RXJyb3IgfSBmcm9tICcuL2Vycm9yJztcblxuZXhwb3J0IHR5cGUgS2V5RnVuYzxUPiA9ICh4OiBUKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBEZXBGdW5jPFQ+ID0gKHg6IFQpID0+IHN0cmluZ1tdO1xuXG4vKipcbiAqIFJldHVybiBhIHRvcG9sb2dpY2FsIHNvcnQgb2YgYWxsIGVsZW1lbnRzIG9mIHhzLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGRlcGVuZGVuY3kgZnVuY3Rpb25zXG4gKlxuICogRGVwZW5kZW5jaWVzIG91dHNpZGUgdGhlIHJlZmVyZW5jZWQgc2V0IGFyZSBpZ25vcmVkLlxuICpcbiAqIE5vdCBhIHN0YWJsZSBzb3J0LCBidXQgaW4gb3JkZXIgdG8ga2VlcCB0aGUgb3JkZXIgYXMgc3RhYmxlIGFzIHBvc3NpYmxlLCB3ZSdsbCBzb3J0IGJ5IGtleVxuICogYW1vbmcgZWxlbWVudHMgb2YgZXF1YWwgcHJlY2VkZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvcG9sb2dpY2FsU29ydDxUPih4czogSXRlcmFibGU8VD4sIGtleUZuOiBLZXlGdW5jPFQ+LCBkZXBGbjogRGVwRnVuYzxUPik6IFRbXSB7XG4gIGNvbnN0IHJlbWFpbmluZyA9IG5ldyBNYXA8c3RyaW5nLCBUb3BvRWxlbWVudDxUPj4oKTtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIHhzKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5Rm4oZWxlbWVudCk7XG4gICAgcmVtYWluaW5nLnNldChrZXksIHsga2V5LCBlbGVtZW50LCBkZXBlbmRlbmNpZXM6IGRlcEZuKGVsZW1lbnQpIH0pO1xuICB9XG5cbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFQ+KCk7XG4gIHdoaWxlIChyZW1haW5pbmcuc2l6ZSA+IDApIHtcbiAgICAvLyBBbGwgZWxlbWVudHMgd2l0aCBubyBtb3JlIGRlcHMgaW4gdGhlIHNldCBjYW4gYmUgb3JkZXJlZFxuICAgIGNvbnN0IHNlbGVjdGFibGUgPSBBcnJheS5mcm9tKHJlbWFpbmluZy52YWx1ZXMoKSkuZmlsdGVyKGUgPT4gZS5kZXBlbmRlbmNpZXMuZXZlcnkoZCA9PiAhcmVtYWluaW5nLmhhcyhkKSkpO1xuXG4gICAgc2VsZWN0YWJsZS5zb3J0KChhLCBiKSA9PiBhLmtleSA8IGIua2V5ID8gLTEgOiBiLmtleSA8IGEua2V5ID8gMSA6IDApO1xuXG4gICAgZm9yIChjb25zdCBzZWxlY3RlZCBvZiBzZWxlY3RhYmxlKSB7XG4gICAgICByZXQucHVzaChzZWxlY3RlZC5lbGVtZW50KTtcbiAgICAgIHJlbWFpbmluZy5kZWxldGUoc2VsZWN0ZWQua2V5KTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBkaWRuJ3QgbWFrZSBhbnkgcHJvZ3Jlc3MsIHdlIGdvdCBzdHVja1xuICAgIGlmIChzZWxlY3RhYmxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IENsb3VkQXNzZW1ibHlFcnJvcihgQ291bGQgbm90IGRldGVybWluZSBvcmRlcmluZyBiZXR3ZWVuOiAke0FycmF5LmZyb20ocmVtYWluaW5nLmtleXMoKSkuam9pbignLCAnKX1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5pbnRlcmZhY2UgVG9wb0VsZW1lbnQ8VD4ge1xuICBrZXk6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcbiAgZWxlbWVudDogVDtcbn1cbiJdfQ==
|