cdk8s-aws-cdk 0.0.5
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/.gitattributes +21 -0
- package/.jsii +4392 -0
- package/API.md +2204 -0
- package/LICENSE +202 -0
- package/README.md +201 -0
- package/changelog.md +2 -0
- package/examples/rds-db-instance/README.md +0 -0
- package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.assets.json +19 -0
- package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.template.json +86 -0
- package/examples/rds-db-instance/cdk.out/cdk.out +1 -0
- package/examples/rds-db-instance/cdk.out/manifest.json +230 -0
- package/examples/rds-db-instance/cdk.out/tree.json +171 -0
- package/examples/rds-db-instance/main.ts +136 -0
- package/lib/adapter.d.ts +37 -0
- package/lib/adapter.d.ts.map +1 -0
- package/lib/adapter.js +196 -0
- package/lib/chart.d.ts +19 -0
- package/lib/chart.d.ts.map +1 -0
- package/lib/chart.js +63 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.d.ts +106 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.js +92 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts +430 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.js +314 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts +173 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.js +156 -0
- package/lib/imports/fieldexports-services.k8s.aws.d.ts +159 -0
- package/lib/imports/fieldexports-services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/fieldexports-services.k8s.aws.js +151 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts +135 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.js +109 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.d.ts +143 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.js +112 -0
- package/lib/imports/k8s.d.ts +18619 -0
- package/lib/imports/k8s.d.ts.map +1 -0
- package/lib/imports/k8s.js +14701 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts +280 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.js +183 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts +343 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.js +225 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts +790 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.js +217 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts +114 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.js +108 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts +2253 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.js +1672 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts +203 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.js +174 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.d.ts +106 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.js +110 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/mappers/base.d.ts +23 -0
- package/lib/mappers/base.d.ts.map +1 -0
- package/lib/mappers/base.js +20 -0
- package/lib/mappers/ec2-security-group.d.ts +9 -0
- package/lib/mappers/ec2-security-group.d.ts.map +1 -0
- package/lib/mappers/ec2-security-group.js +33 -0
- package/lib/mappers/iam-policy.d.ts +9 -0
- package/lib/mappers/iam-policy.d.ts.map +1 -0
- package/lib/mappers/iam-policy.js +32 -0
- package/lib/mappers/iam-role.d.ts +9 -0
- package/lib/mappers/iam-role.d.ts.map +1 -0
- package/lib/mappers/iam-role.js +34 -0
- package/lib/mappers/index.d.ts +9 -0
- package/lib/mappers/index.d.ts.map +1 -0
- package/lib/mappers/index.js +21 -0
- package/lib/mappers/lambda-function.d.ts +9 -0
- package/lib/mappers/lambda-function.d.ts.map +1 -0
- package/lib/mappers/lambda-function.js +37 -0
- package/lib/mappers/rds-db-instance.d.ts +10 -0
- package/lib/mappers/rds-db-instance.d.ts.map +1 -0
- package/lib/mappers/rds-db-instance.js +65 -0
- package/lib/mappers/rds-db-subnet-group.d.ts +9 -0
- package/lib/mappers/rds-db-subnet-group.d.ts.map +1 -0
- package/lib/mappers/rds-db-subnet-group.js +34 -0
- package/lib/mappers/s3-bucket.d.ts +9 -0
- package/lib/mappers/s3-bucket.d.ts.map +1 -0
- package/lib/mappers/s3-bucket.js +53 -0
- package/package.json +129 -0
- package/releasetag.txt +1 -0
- package/version.txt +1 -0
package/lib/adapter.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.AwsCdkAdapater = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws = require("aws-cdk-lib");
|
|
7
|
+
const k = require("cdk8s");
|
|
8
|
+
const kplus = require("cdk8s-plus-24");
|
|
9
|
+
const kfieldexports = require("./imports/fieldexports-services.k8s.aws");
|
|
10
|
+
const mappers = require("./mappers");
|
|
11
|
+
class AwsCdkAdapater extends aws.Stack {
|
|
12
|
+
constructor(scope, id, props) {
|
|
13
|
+
super(scope, id, props);
|
|
14
|
+
this._mappers = {};
|
|
15
|
+
this.chart = props.chart;
|
|
16
|
+
this.registerMapper(new mappers.RdsDBInstanceMapper(this.chart));
|
|
17
|
+
this.registerMapper(new mappers.Ec2SecurityGroupMapper(this.chart));
|
|
18
|
+
this.registerMapper(new mappers.RdsDBSubnetGroup(this.chart));
|
|
19
|
+
this.registerMapper(new mappers.IamPolicyMapper(this.chart));
|
|
20
|
+
this.registerMapper(new mappers.IamRoleMapper(this.chart));
|
|
21
|
+
this.registerMapper(new mappers.LambdaFunctionMapper(this.chart));
|
|
22
|
+
this.registerMapper(new mappers.S3BucketMapper(this.chart));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Register a mapper that can transform a specific CloudFormation resource type.
|
|
26
|
+
*/
|
|
27
|
+
registerMapper(mapper) {
|
|
28
|
+
this._mappers[mapper.type] = mapper;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Transform CloudFormation resources to ACK resources.
|
|
32
|
+
*/
|
|
33
|
+
transformResources(cfnResources) {
|
|
34
|
+
for (const cfnResource of cfnResources) {
|
|
35
|
+
const logicalId = this.getLogicalId(cfnResource);
|
|
36
|
+
const cfnType = cfnResource.cfnResourceType;
|
|
37
|
+
const mapper = this.tryFindMapper(cfnType);
|
|
38
|
+
if (!mapper) {
|
|
39
|
+
throw new Error(`Unable to transform resource of type '${cfnType}'. Mapper is not registered`);
|
|
40
|
+
}
|
|
41
|
+
const cfnTemplateResources = Object.values(cfnResource._toCloudFormation().Resources);
|
|
42
|
+
const cfnProperties = this.resolveIntrinsics(logicalId, this.resolve(cfnTemplateResources[0].value.Properties.value), mapper);
|
|
43
|
+
const resource = mapper.map(logicalId, cfnProperties);
|
|
44
|
+
// for each resource we patch its name if needed
|
|
45
|
+
if (!cfnProperties[mapper.nameMapping.cfnProperty]) {
|
|
46
|
+
resource.addJsonPatch(k.JsonPatch.add(mapper.nameMapping.specPath, resource.name));
|
|
47
|
+
resource.addJsonPatch(k.JsonPatch.add('/metadata', { name: resource.name }));
|
|
48
|
+
}
|
|
49
|
+
// for each resource we create a config map that will hold its field exports.
|
|
50
|
+
// i.e runtime attributes. these will later be used to transform CloudFormation
|
|
51
|
+
// attributes.
|
|
52
|
+
const configMap = new kplus.ConfigMap(this.chart, `${logicalId}ConfigMap`);
|
|
53
|
+
for (const exportMapping of mapper.exportMappings) {
|
|
54
|
+
new kfieldexports.FieldExport(this.chart, this.fieldExportId(logicalId, exportMapping.attribute), {
|
|
55
|
+
spec: {
|
|
56
|
+
from: {
|
|
57
|
+
path: this.fieldExportPath(exportMapping.field),
|
|
58
|
+
resource: { group: resource.apiGroup, kind: resource.kind, name: resource.name },
|
|
59
|
+
},
|
|
60
|
+
to: {
|
|
61
|
+
kind: kfieldexports.FieldExportSpecToKind.CONFIGMAP,
|
|
62
|
+
name: configMap.name,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Transform CloudFormation attributes into ACK field exports.
|
|
71
|
+
*
|
|
72
|
+
* Note that this is only supported for container environment variables,
|
|
73
|
+
* as only they allow referencing fields from config maps, which the field exports export to.
|
|
74
|
+
*
|
|
75
|
+
* If an ApiObject contains a CloudFormation attribute in any other definition, it will remain
|
|
76
|
+
* as is, it will remain in-place.
|
|
77
|
+
*/
|
|
78
|
+
transformAttributes(apiObjects) {
|
|
79
|
+
var _b, _c, _d, _e;
|
|
80
|
+
for (const apiObject of apiObjects) {
|
|
81
|
+
const spec = apiObject.toJson().spec;
|
|
82
|
+
switch (apiObject.kind) {
|
|
83
|
+
case 'Deployment':
|
|
84
|
+
case 'StatefulSet':
|
|
85
|
+
case 'DaemonSet':
|
|
86
|
+
case 'Job':
|
|
87
|
+
this.patchContainerEnvironment(apiObject, (_d = (_c = (_b = spec === null || spec === void 0 ? void 0 : spec.template) === null || _b === void 0 ? void 0 : _b.spec) === null || _c === void 0 ? void 0 : _c.containers) !== null && _d !== void 0 ? _d : [], '/spec/template/spec/containers');
|
|
88
|
+
break;
|
|
89
|
+
case 'Pod':
|
|
90
|
+
this.patchContainerEnvironment(apiObject, (_e = spec === null || spec === void 0 ? void 0 : spec.containers) !== null && _e !== void 0 ? _e : [], '/spec/containers');
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
patchContainerEnvironment(resource, containers, path) {
|
|
98
|
+
var _b, _c;
|
|
99
|
+
for (let i = 0; i < containers.length; i++) {
|
|
100
|
+
const container = containers[i];
|
|
101
|
+
const envVars = (_b = container.env) !== null && _b !== void 0 ? _b : [];
|
|
102
|
+
for (let j = 0; j < envVars.length; j++) {
|
|
103
|
+
const envVar = envVars[j];
|
|
104
|
+
if (!envVar.value) {
|
|
105
|
+
// we only conver value --> valueFrom
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (!aws.Token.isUnresolved(envVar.value)) {
|
|
109
|
+
// no conversion necessary
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const resolved = this.resolve(envVar.value);
|
|
113
|
+
if (typeof (resolved) !== 'object') {
|
|
114
|
+
// not sure what this means...skip in the meantime
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const key = Object.keys(resolved)[0];
|
|
118
|
+
if (!key.startsWith('Fn::GetAtt')) {
|
|
119
|
+
// not sure what this means...skip in the meantime
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const value = Object.values(resolved)[0];
|
|
123
|
+
const logicalId = value[0];
|
|
124
|
+
const attribute = value[1];
|
|
125
|
+
// locate the field exports that is mapped to this attribute.
|
|
126
|
+
const fieldExport = this.tryFindFieldExport(logicalId, attribute);
|
|
127
|
+
if (!fieldExport) {
|
|
128
|
+
throw new Error(`Unable to transform attribute '${JSON.stringify(resolved)}' for env variable '${envVar.name}' in resource '${resource.name}': Field export not registered.`);
|
|
129
|
+
}
|
|
130
|
+
const fieldExportSpec = fieldExport.toJson().spec;
|
|
131
|
+
const namespace = (_c = fieldExport.metadata.namespace) !== null && _c !== void 0 ? _c : 'default';
|
|
132
|
+
resource.addJsonPatch(k.JsonPatch.remove(`${path}/${i}/env/${j}`));
|
|
133
|
+
resource.addJsonPatch(k.JsonPatch.add(`${path}/${i}/env/${j}`, {
|
|
134
|
+
name: envVar.name,
|
|
135
|
+
valueFrom: {
|
|
136
|
+
configMapKeyRef: {
|
|
137
|
+
key: `${namespace}.${fieldExport.name}`,
|
|
138
|
+
name: fieldExportSpec.to.name,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
resolveIntrinsics(logicalId, properties, mapper) {
|
|
146
|
+
const resolved = JSON.stringify(properties, (key, value) => {
|
|
147
|
+
if (typeof (value) !== 'object') {
|
|
148
|
+
// not an attribute
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
if (Object.keys(value).length !== 1) {
|
|
152
|
+
// definitely not an intrinsic, which takes the form '{ key: value }'
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
const attribute = Object.keys(value)[0];
|
|
156
|
+
const refLogicalId = Object.values(value)[0];
|
|
157
|
+
if (attribute.startsWith('Fn::')) {
|
|
158
|
+
// ACK doesn't have support for Fn:: intrinsics at the moment.
|
|
159
|
+
// actually -- thats not entirely true, some resources do have a way to pass
|
|
160
|
+
// values by referencing other resources. For example, you can pass a `vpcRef`
|
|
161
|
+
// to a security group, instead of the actual vpc id. but I have yet to list those out,
|
|
162
|
+
// and understand how they work.
|
|
163
|
+
throw new Error(`Unable to resolve intrinsic function '${JSON.stringify(value)}' in property '${key}' of resource '${logicalId}'`);
|
|
164
|
+
}
|
|
165
|
+
if (attribute !== 'Ref') {
|
|
166
|
+
// probably just a complext value, move on...
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
169
|
+
// we can resolve 'Ref' because we know all resource names at synth time.
|
|
170
|
+
const reference = this.chart.node.findChild(refLogicalId);
|
|
171
|
+
switch (mapper.refMapping) {
|
|
172
|
+
case mappers.CloudFormationMapperRefMapping.NAME:
|
|
173
|
+
return k.ApiObject.of(reference).name;
|
|
174
|
+
default:
|
|
175
|
+
throw new Error(`Unsupported ref mapping: ${mapper.refMapping}`);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
return JSON.parse(resolved);
|
|
179
|
+
}
|
|
180
|
+
tryFindMapper(cfnType) {
|
|
181
|
+
return this._mappers[cfnType];
|
|
182
|
+
}
|
|
183
|
+
tryFindFieldExport(logicalId, attr) {
|
|
184
|
+
return this.chart.node.tryFindChild(this.fieldExportId(logicalId, attr));
|
|
185
|
+
}
|
|
186
|
+
fieldExportId(logicalId, attribute) {
|
|
187
|
+
return `${logicalId}${attribute}`;
|
|
188
|
+
}
|
|
189
|
+
fieldExportPath(field) {
|
|
190
|
+
return `.status.${field}`;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.AwsCdkAdapater = AwsCdkAdapater;
|
|
194
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
195
|
+
AwsCdkAdapater[_a] = { fqn: "cdk8s-aws-cdk.AwsCdkAdapater", version: "0.0.5" };
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDJCQUEyQjtBQUMzQix1Q0FBdUM7QUFFdkMseUVBQXlFO0FBRXpFLHFDQUFxQztBQU9yQyxNQUFhLGNBQWUsU0FBUSxHQUFHLENBQUMsS0FBSztJQU0zQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSFQsYUFBUSxHQUF5RCxFQUFFLENBQUM7UUFJbkYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXpCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8s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YUFBYSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDeEQsT0FBTyxHQUFHLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWE7UUFDbkMsT0FBTyxXQUFXLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7O0FBak9ILHdDQW1PQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGF3cyBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBrIGZyb20gJ2NkazhzJztcbmltcG9ydCAqIGFzIGtwbHVzIGZyb20gJ2NkazhzLXBsdXMtMjQnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBrZmllbGRleHBvcnRzIGZyb20gJy4vaW1wb3J0cy9maWVsZGV4cG9ydHMtc2VydmljZXMuazhzLmF3cyc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBtYXBwZXJzIGZyb20gJy4vbWFwcGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2RrQWRhcHRlclByb3BzIGV4dGVuZHMgYXdzLlN0YWNrUHJvcHMge1xuXG4gIHJlYWRvbmx5IGNoYXJ0OiBrLkNoYXJ0O1xufVxuXG5leHBvcnQgY2xhc3MgQXdzQ2RrQWRhcGF0ZXIgZXh0ZW5kcyBhd3MuU3RhY2sge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnQ6IGsuQ2hhcnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbWFwcGVyczogUmVjb3JkPHN0cmluZywgbWFwcGVycy5DbG91ZEZvcm1hdGlvblJlc291cmNlTWFwcGVyPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBd3NDZGtBZGFwdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLmNoYXJ0ID0gcHJvcHMuY2hhcnQ7XG5cbiAgICB0aGlzLnJlZ2lzdGVyTWFwcGVyKG5ldyBtYXBwZXJzLlJkc0RCSW5zdGFuY2VNYXBwZXIodGhpcy5jaGFydCkpO1xuICAgIHRoaXMucmVnaXN0ZXJNYXBwZXIobmV3IG1hcHBlcnMuRWMyU2VjdXJpdHlHcm91cE1hcHBlcih0aGlzLmNoYXJ0KSk7XG4gICAgdGhpcy5yZWdpc3Rlck1hcHBlcihuZXcgbWFwcGVycy5SZHNEQlN1Ym5ldEdyb3VwKHRoaXMuY2hhcnQpKTtcbiAgICB0aGlzLnJlZ2lzdGVyTWFwcGVyKG5ldyBtYXBwZXJzLklhbVBvbGljeU1hcHBlcih0aGlzLmNoYXJ0KSk7XG4gICAgdGhpcy5yZWdpc3Rlck1hcHBlcihuZXcgbWFwcGVycy5JYW1Sb2xlTWFwcGVyKHRoaXMuY2hhcnQpKTtcbiAgICB0aGlzLnJlZ2lzdGVyTWFwcGVyKG5ldyBtYXBwZXJzLkxhbWJkYUZ1bmN0aW9uTWFwcGVyKHRoaXMuY2hhcnQpKTtcbiAgICB0aGlzLnJlZ2lzdGVyTWFwcGVyKG5ldyBtYXBwZXJzLlMzQnVja2V0TWFwcGVyKHRoaXMuY2hhcnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIG1hcHBlciB0aGF0IGNhbiB0cmFuc2Zvcm0gYSBzcGVjaWZpYyBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyTWFwcGVyKG1hcHBlcjogbWFwcGVycy5DbG91ZEZvcm1hdGlvblJlc291cmNlTWFwcGVyKSB7XG4gICAgdGhpcy5fbWFwcGVyc1ttYXBwZXIudHlwZV0gPSBtYXBwZXI7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIENsb3VkRm9ybWF0aW9uIHJlc291cmNlcyB0byBBQ0sgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybVJlc291cmNlcyhjZm5SZXNvdXJjZXM6IGF3cy5DZm5SZXNvdXJjZVtdKSB7XG5cbiAgICBmb3IgKGNvbnN0IGNmblJlc291cmNlIG9mIGNmblJlc291cmNlcykge1xuICAgICAgY29uc3QgbG9naWNhbElkID0gdGhpcy5nZXRMb2dpY2FsSWQoY2ZuUmVzb3VyY2UpO1xuICAgICAgY29uc3QgY2ZuVHlwZSA9IGNmblJlc291cmNlLmNmblJlc291cmNlVHlwZTtcblxuICAgICAgY29uc3QgbWFwcGVyID0gdGhpcy50cnlGaW5kTWFwcGVyKGNmblR5cGUpO1xuXG4gICAgICBpZiAoIW1hcHBlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB0cmFuc2Zvcm0gcmVzb3VyY2Ugb2YgdHlwZSAnJHtjZm5UeXBlfScuIE1hcHBlciBpcyBub3QgcmVnaXN0ZXJlZGApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjZm5UZW1wbGF0ZVJlc291cmNlcyA9IE9iamVjdC52YWx1ZXMoKGNmblJlc291cmNlLl90b0Nsb3VkRm9ybWF0aW9uKCkgYXMgYW55KS5SZXNvdXJjZXMpIGFzIGFueVtdO1xuICAgICAgY29uc3QgY2ZuUHJvcGVydGllcyA9IHRoaXMucmVzb2x2ZUludHJpbnNpY3MobG9naWNhbElkLCB0aGlzLnJlc29sdmUoY2ZuVGVtcGxhdGVSZXNvdXJjZXNbMF0udmFsdWUuUHJvcGVydGllcy52YWx1ZSksIG1hcHBlcik7XG5cbiAgICAgIGNvbnN0IHJlc291cmNlID0gbWFwcGVyLm1hcChsb2dpY2FsSWQsIGNmblByb3BlcnRpZXMpO1xuXG4gICAgICAvLyBmb3IgZWFjaCByZXNvdXJjZSB3ZSBwYXRjaCBpdHMgbmFtZSBpZiBuZWVkZWRcbiAgICAgIGlmICghY2ZuUHJvcGVydGllc1ttYXBwZXIubmFtZU1hcHBpbmcuY2ZuUHJvcGVydHldKSB7XG4gICAgICAgIHJlc291cmNlLmFkZEpzb25QYXRjaChrLkpzb25QYXRjaC5hZGQobWFwcGVyLm5hbWVNYXBwaW5nLnNwZWNQYXRoLCByZXNvdXJjZS5uYW1lKSk7XG4gICAgICAgIHJlc291cmNlLmFkZEpzb25QYXRjaChrLkpzb25QYXRjaC5hZGQoJy9tZXRhZGF0YScsIHsgbmFtZTogcmVzb3VyY2UubmFtZSB9KSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGZvciBlYWNoIHJlc291cmNlIHdlIGNyZWF0ZSBhIGNvbmZpZyBtYXAgdGhhdCB3aWxsIGhvbGQgaXRzIGZpZWxkIGV4cG9ydHMuXG4gICAgICAvLyBpLmUgcnVudGltZSBhdHRyaWJ1dGVzLiB0aGVzZSB3aWxsIGxhdGVyIGJlIHVzZWQgdG8gdHJhbnNmb3JtIENsb3VkRm9ybWF0aW9uXG4gICAgICAvLyBhdHRyaWJ1dGVzLlxuICAgICAgY29uc3QgY29uZmlnTWFwID0gbmV3IGtwbHVzLkNvbmZpZ01hcCh0aGlzLmNoYXJ0LCBgJHtsb2dpY2FsSWR9Q29uZmlnTWFwYCk7XG5cbiAgICAgIGZvciAoY29uc3QgZXhwb3J0TWFwcGluZyBvZiBtYXBwZXIuZXhwb3J0TWFwcGluZ3MpIHtcbiAgICAgICAgbmV3IGtmaWVsZGV4cG9ydHMuRmllbGRFeHBvcnQodGhpcy5jaGFydCwgdGhpcy5maWVsZEV4cG9ydElkKGxvZ2ljYWxJZCwgZXhwb3J0TWFwcGluZy5hdHRyaWJ1dGUpLCB7XG4gICAgICAgICAgc3BlYzoge1xuICAgICAgICAgICAgZnJvbToge1xuICAgICAgICAgICAgICBwYXRoOiB0aGlzLmZpZWxkRXhwb3J0UGF0aChleHBvcnRNYXBwaW5nLmZpZWxkKSxcbiAgICAgICAgICAgICAgcmVzb3VyY2U6IHsgZ3JvdXA6IHJlc291cmNlLmFwaUdyb3VwLCBraW5kOiByZXNvdXJjZS5raW5kLCBuYW1lOiByZXNvdXJjZS5uYW1lIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAga2luZDoga2ZpZWxkZXhwb3J0cy5GaWVsZEV4cG9ydFNwZWNUb0tpbmQuQ09ORklHTUFQLFxuICAgICAgICAgICAgICBuYW1lOiBjb25maWdNYXAubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBDbG91ZEZvcm1hdGlvbiBhdHRyaWJ1dGVzIGludG8gQUNLIGZpZWxkIGV4cG9ydHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjb250YWluZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzLFxuICAgKiBhcyBvbmx5IHRoZXkgYWxsb3cgcmVmZXJlbmNpbmcgZmllbGRzIGZyb20gY29uZmlnIG1hcHMsIHdoaWNoIHRoZSBmaWVsZCBleHBvcnRzIGV4cG9ydCB0by5cbiAgICpcbiAgICogSWYgYW4gQXBpT2JqZWN0IGNvbnRhaW5zIGEgQ2xvdWRGb3JtYXRpb24gYXR0cmlidXRlIGluIGFueSBvdGhlciBkZWZpbml0aW9uLCBpdCB3aWxsIHJlbWFpblxuICAgKiBhcyBpcywgaXQgd2lsbCByZW1haW4gaW4tcGxhY2UuXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtQXR0cmlidXRlcyhhcGlPYmplY3RzOiBrLkFwaU9iamVjdFtdKSB7XG5cbiAgICBmb3IgKGNvbnN0IGFwaU9iamVjdCBvZiBhcGlPYmplY3RzKSB7XG5cbiAgICAgIGNvbnN0IHNwZWM6IGFueSA9IGFwaU9iamVjdC50b0pzb24oKS5zcGVjO1xuXG4gICAgICBzd2l0Y2ggKGFwaU9iamVjdC5raW5kKSB7XG4gICAgICAgIGNhc2UgJ0RlcGxveW1lbnQnOlxuICAgICAgICBjYXNlICdTdGF0ZWZ1bFNldCc6XG4gICAgICAgIGNhc2UgJ0RhZW1vblNldCc6XG4gICAgICAgIGNhc2UgJ0pvYic6XG4gICAgICAgICAgdGhpcy5wYXRjaENvbnRhaW5lckVudmlyb25tZW50KGFwaU9iamVjdCwgc3BlYz8udGVtcGxhdGU/LnNwZWM/LmNvbnRhaW5lcnMgPz8gW10sICcvc3BlYy90ZW1wbGF0ZS9zcGVjL2NvbnRhaW5lcnMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUG9kJzpcbiAgICAgICAgICB0aGlzLnBhdGNoQ29udGFpbmVyRW52aXJvbm1lbnQoYXBpT2JqZWN0LCBzcGVjPy5jb250YWluZXJzID8/IFtdLCAnL3NwZWMvY29udGFpbmVycycpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hDb250YWluZXJFbnZpcm9ubWVudChyZXNvdXJjZTogay5BcGlPYmplY3QsIGNvbnRhaW5lcnM6IGs4cy5Db250YWluZXJbXSwgcGF0aDogc3RyaW5nKSB7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lcnMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyc1tpXTtcbiAgICAgIGNvbnN0IGVudlZhcnMgPSBjb250YWluZXIuZW52ID8/IFtdO1xuXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGVudlZhcnMubGVuZ3RoOyBqKyspIHtcblxuICAgICAgICBjb25zdCBlbnZWYXIgPSBlbnZWYXJzW2pdO1xuXG4gICAgICAgIGlmICghZW52VmFyLnZhbHVlKSB7XG4gICAgICAgICAgLy8gd2Ugb25seSBjb252ZXIgdmFsdWUgLS0+IHZhbHVlRnJvbVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhd3MuVG9rZW4uaXNVbnJlc29sdmVkKGVudlZhci52YWx1ZSkpIHtcbiAgICAgICAgICAvLyBubyBjb252ZXJzaW9uIG5lY2Vzc2FyeVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmUoZW52VmFyLnZhbHVlKTtcblxuICAgICAgICBpZiAodHlwZW9mKHJlc29sdmVkKSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAvLyBub3Qgc3VyZSB3aGF0IHRoaXMgbWVhbnMuLi5za2lwIGluIHRoZSBtZWFudGltZVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMocmVzb2x2ZWQpWzBdO1xuICAgICAgICBpZiAoIWtleS5zdGFydHNXaXRoKCdGbjo6R2V0QXR0JykpIHtcbiAgICAgICAgICAvLyBub3Qgc3VyZSB3aGF0IHRoaXMgbWVhbnMuLi5za2lwIGluIHRoZSBtZWFudGltZVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBPYmplY3QudmFsdWVzKHJlc29sdmVkKVswXSBhcyBzdHJpbmdbXTtcbiAgICAgICAgY29uc3QgbG9naWNhbElkID0gdmFsdWVbMF07XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHZhbHVlWzFdO1xuXG4gICAgICAgIC8vIGxvY2F0ZSB0aGUgZmllbGQgZXhwb3J0cyB0aGF0IGlzIG1hcHBlZCB0byB0aGlzIGF0dHJpYnV0ZS5cbiAgICAgICAgY29uc3QgZmllbGRFeHBvcnQgPSB0aGlzLnRyeUZpbmRGaWVsZEV4cG9ydChsb2dpY2FsSWQsIGF0dHJpYnV0ZSk7XG4gICAgICAgIGlmICghZmllbGRFeHBvcnQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB0cmFuc2Zvcm0gYXR0cmlidXRlICcke0pTT04uc3RyaW5naWZ5KHJlc29sdmVkKX0nIGZvciBlbnYgdmFyaWFibGUgJyR7ZW52VmFyLm5hbWV9JyBpbiByZXNvdXJjZSAnJHtyZXNvdXJjZS5uYW1lfSc6IEZpZWxkIGV4cG9ydCBub3QgcmVnaXN0ZXJlZC5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkRXhwb3J0U3BlYzoga2ZpZWxkZXhwb3J0cy5GaWVsZEV4cG9ydFNwZWMgPSBmaWVsZEV4cG9ydC50b0pzb24oKS5zcGVjO1xuICAgICAgICBjb25zdCBuYW1lc3BhY2UgPSBmaWVsZEV4cG9ydC5tZXRhZGF0YS5uYW1lc3BhY2UgPz8gJ2RlZmF1bHQnO1xuXG4gICAgICAgIHJlc291cmNlLmFkZEpzb25QYXRjaChrLkpzb25QYXRjaC5yZW1vdmUoYCR7cGF0aH0vJHtpfS9lbnYvJHtqfWApKTtcbiAgICAgICAgcmVzb3VyY2UuYWRkSnNvblBhdGNoKGsuSnNvblBhdGNoLmFkZChgJHtwYXRofS8ke2l9L2Vudi8ke2p9YCwge1xuICAgICAgICAgIG5hbWU6IGVudlZhci5uYW1lLFxuICAgICAgICAgIHZhbHVlRnJvbToge1xuICAgICAgICAgICAgY29uZmlnTWFwS2V5UmVmOiB7XG4gICAgICAgICAgICAgIGtleTogYCR7bmFtZXNwYWNlfS4ke2ZpZWxkRXhwb3J0Lm5hbWV9YCxcbiAgICAgICAgICAgICAgbmFtZTogZmllbGRFeHBvcnRTcGVjLnRvLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJbnRyaW5zaWNzKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wZXJ0aWVzOiBhbnksIG1hcHBlcjogbWFwcGVycy5DbG91ZEZvcm1hdGlvblJlc291cmNlTWFwcGVyKSB7XG5cbiAgICBjb25zdCByZXNvbHZlZCA9IEpTT04uc3RyaW5naWZ5KHByb3BlcnRpZXMsIChrZXksIHZhbHVlKSA9PiB7XG5cbiAgICAgIGlmICh0eXBlb2YodmFsdWUpICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBub3QgYW4gYXR0cmlidXRlXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgLy8gZGVmaW5pdGVseSBub3QgYW4gaW50cmluc2ljLCB3aGljaCB0YWtlcyB0aGUgZm9ybSAneyBrZXk6IHZhbHVlIH0nXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXR0cmlidXRlID0gT2JqZWN0LmtleXModmFsdWUpWzBdO1xuICAgICAgY29uc3QgcmVmTG9naWNhbElkID0gT2JqZWN0LnZhbHVlcyh2YWx1ZSlbMF07XG5cbiAgICAgIGlmIChhdHRyaWJ1dGUuc3RhcnRzV2l0aCgnRm46OicpKSB7XG4gICAgICAgIC8vIEFDSyBkb2Vzbid0IGhhdmUgc3VwcG9ydCBmb3IgRm46OiBpbnRyaW5zaWNzIGF0IHRoZSBtb21lbnQuXG4gICAgICAgIC8vIGFjdHVhbGx5IC0tIHRoYXRzIG5vdCBlbnRpcmVseSB0cnVlLCBzb21lIHJlc291cmNlcyBkbyBoYXZlIGEgd2F5IHRvIHBhc3NcbiAgICAgICAgLy8gdmFsdWVzIGJ5IHJlZmVyZW5jaW5nIG90aGVyIHJlc291cmNlcy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gcGFzcyBhIGB2cGNSZWZgXG4gICAgICAgIC8vIHRvIGEgc2VjdXJpdHkgZ3JvdXAsIGluc3RlYWQgb2YgdGhlIGFjdHVhbCB2cGMgaWQuIGJ1dCBJIGhhdmUgeWV0IHRvIGxpc3QgdGhvc2Ugb3V0LFxuICAgICAgICAvLyBhbmQgdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZXNvbHZlIGludHJpbnNpYyBmdW5jdGlvbiAnJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9JyBpbiBwcm9wZXJ0eSAnJHtrZXl9JyBvZiByZXNvdXJjZSAnJHtsb2dpY2FsSWR9J2ApO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXR0cmlidXRlICE9PSAnUmVmJykge1xuICAgICAgICAvLyBwcm9iYWJseSBqdXN0IGEgY29tcGxleHQgdmFsdWUsIG1vdmUgb24uLi5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyB3ZSBjYW4gcmVzb2x2ZSAnUmVmJyBiZWNhdXNlIHdlIGtub3cgYWxsIHJlc291cmNlIG5hbWVzIGF0IHN5bnRoIHRpbWUuXG4gICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLmNoYXJ0Lm5vZGUuZmluZENoaWxkKHJlZkxvZ2ljYWxJZCBhcyBzdHJpbmcpO1xuICAgICAgc3dpdGNoIChtYXBwZXIucmVmTWFwcGluZykge1xuICAgICAgICBjYXNlIG1hcHBlcnMuQ2xvdWRGb3JtYXRpb25NYXBwZXJSZWZNYXBwaW5nLk5BTUU6XG4gICAgICAgICAgcmV0dXJuIGsuQXBpT2JqZWN0Lm9mKHJlZmVyZW5jZSkubmFtZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHJlZiBtYXBwaW5nOiAke21hcHBlci5yZWZNYXBwaW5nfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzb2x2ZWQpO1xuXG4gIH1cblxuICBwcml2YXRlIHRyeUZpbmRNYXBwZXIoY2ZuVHlwZTogc3RyaW5nKTogbWFwcGVycy5DbG91ZEZvcm1hdGlvblJlc291cmNlTWFwcGVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWFwcGVyc1tjZm5UeXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ5RmluZEZpZWxkRXhwb3J0KGxvZ2ljYWxJZDogc3RyaW5nLCBhdHRyOiBzdHJpbmcpOiBrZmllbGRleHBvcnRzLkZpZWxkRXhwb3J0IHtcbiAgICByZXR1cm4gdGhpcy5jaGFydC5ub2RlLnRyeUZpbmRDaGlsZCh0aGlzLmZpZWxkRXhwb3J0SWQobG9naWNhbElkLCBhdHRyKSkgYXMga2ZpZWxkZXhwb3J0cy5GaWVsZEV4cG9ydDtcbiAgfVxuXG4gIHByaXZhdGUgZmllbGRFeHBvcnRJZChsb2dpY2FsSWQ6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYCR7bG9naWNhbElkfSR7YXR0cmlidXRlfWA7XG4gIH1cblxuICBwcml2YXRlIGZpZWxkRXhwb3J0UGF0aChmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAuc3RhdHVzLiR7ZmllbGR9YDtcbiAgfVxuXG59XG4iXX0=
|
package/lib/chart.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as k from 'cdk8s';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import * as adapter from './adapter';
|
|
4
|
+
import * as mappers from './mappers';
|
|
5
|
+
export declare class Chart extends k.Chart {
|
|
6
|
+
protected readonly adapter: adapter.AwsCdkAdapater;
|
|
7
|
+
constructor(scope: Construct, id: string, props?: k.ChartProps);
|
|
8
|
+
private _validate;
|
|
9
|
+
/**
|
|
10
|
+
* Monkey patches the chart to also inherit from an AWS CDK stack.
|
|
11
|
+
* This makes it so the chart can be passed as a scope of AWS CDK constructs.
|
|
12
|
+
*/
|
|
13
|
+
private _inheritStack;
|
|
14
|
+
/**
|
|
15
|
+
* Registers a new mapper.
|
|
16
|
+
*/
|
|
17
|
+
protected registerMapper(mapper: mappers.CloudFormationResourceMapper): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAIrC,qBAAa,KAAM,SAAQ,CAAC,CAAC,KAAK;IAEhC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC;gBAEvC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,CAAC,UAAgB;IAUnE,OAAO,CAAC,SAAS;IAejB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,4BAA4B;CAItE"}
|
package/lib/chart.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Chart = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws = require("aws-cdk-lib");
|
|
7
|
+
const k = require("cdk8s");
|
|
8
|
+
const adapter = require("./adapter");
|
|
9
|
+
const STACK_SYMBOL = Symbol.for('@aws-cdk/core.Stack');
|
|
10
|
+
class Chart extends k.Chart {
|
|
11
|
+
constructor(scope, id, props = {}) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
this.adapter = new adapter.AwsCdkAdapater(this, 'AwsCdkAdapter', { chart: this });
|
|
14
|
+
this._inheritStack();
|
|
15
|
+
// hack that allows us to inject code just before cdk8s synthesis.
|
|
16
|
+
// TODO - figure out a proper hook for synthesis in cdk8s (or maybe constructs?)
|
|
17
|
+
this.node.addValidation({ validate: () => this._validate() });
|
|
18
|
+
}
|
|
19
|
+
_validate() {
|
|
20
|
+
const cfnResources = this.node.findAll().filter(n => aws.CfnResource.isCfnResource(n));
|
|
21
|
+
const apiObjects = this.node.findAll().filter(n => n instanceof k.ApiObject);
|
|
22
|
+
// transform all cfn resources to ack resources
|
|
23
|
+
this.adapter.transformResources(cfnResources);
|
|
24
|
+
// transform cfn attributes to field exports
|
|
25
|
+
this.adapter.transformAttributes(apiObjects);
|
|
26
|
+
// hack, we need to return something...
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Monkey patches the chart to also inherit from an AWS CDK stack.
|
|
31
|
+
* This makes it so the chart can be passed as a scope of AWS CDK constructs.
|
|
32
|
+
*/
|
|
33
|
+
_inheritStack() {
|
|
34
|
+
Object.defineProperty(this, STACK_SYMBOL, { value: true });
|
|
35
|
+
const stackMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(this.adapter)));
|
|
36
|
+
const adapterProperties = Object.getOwnPropertyNames(this.adapter);
|
|
37
|
+
for (const p of [...stackMethods, ...adapterProperties]) {
|
|
38
|
+
if (['constructor', 'node'].includes(p)) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
;
|
|
42
|
+
const v = this.adapter[p];
|
|
43
|
+
if (typeof (v) === 'function') {
|
|
44
|
+
// this is...adventurous? yeah...
|
|
45
|
+
const n = new Function('...args', `return this.adapter.${p}(...args);`);
|
|
46
|
+
Object.defineProperty(this, p, { value: n });
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
Object.defineProperty(this, p, { value: v });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Registers a new mapper.
|
|
55
|
+
*/
|
|
56
|
+
registerMapper(mapper) {
|
|
57
|
+
this.adapter.registerMapper(mapper);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.Chart = Chart;
|
|
61
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
62
|
+
Chart[_a] = { fqn: "cdk8s-aws-cdk.Chart", version: "0.0.5" };
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkJBQTJCO0FBRTNCLHFDQUFxQztBQUdyQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFdkQsTUFBYSxLQUFNLFNBQVEsQ0FBQyxDQUFDLEtBQUs7SUFJaEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFzQixFQUFHO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsa0VBQWtFO1FBQ2xFLGdGQUFnRjtRQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxTQUFTO1FBRWYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBc0IsQ0FBQztRQUM1RyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFrQixDQUFDO1FBRTlGLCtDQUErQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTlDLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLHVDQUF1QztRQUN2QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhO1FBQ25CLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsRUFBRTtZQUV2RCxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsU0FBUzthQUNWO1lBQUEsQ0FBQztZQUVGLE1BQU0sQ0FBQyxHQUFJLElBQUksQ0FBQyxPQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbkMsSUFBSSxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUM1QixpQ0FBaUM7Z0JBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDOUM7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLGNBQWMsQ0FBQyxNQUE0QztRQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOztBQTVESCxzQkE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgayBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGFkYXB0ZXIgZnJvbSAnLi9hZGFwdGVyJztcbmltcG9ydCAqIGFzIG1hcHBlcnMgZnJvbSAnLi9tYXBwZXJzJztcblxuY29uc3QgU1RBQ0tfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvY29yZS5TdGFjaycpO1xuXG5leHBvcnQgY2xhc3MgQ2hhcnQgZXh0ZW5kcyBrLkNoYXJ0IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlcjogYWRhcHRlci5Bd3NDZGtBZGFwYXRlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogay5DaGFydFByb3BzID0geyB9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5hZGFwdGVyID0gbmV3IGFkYXB0ZXIuQXdzQ2RrQWRhcGF0ZXIodGhpcywgJ0F3c0Nka0FkYXB0ZXInLCB7IGNoYXJ0OiB0aGlzIH0pO1xuICAgIHRoaXMuX2luaGVyaXRTdGFjaygpO1xuXG4gICAgLy8gaGFjayB0aGF0IGFsbG93cyB1cyB0byBpbmplY3QgY29kZSBqdXN0IGJlZm9yZSBjZGs4cyBzeW50aGVzaXMuXG4gICAgLy8gVE9ETyAtIGZpZ3VyZSBvdXQgYSBwcm9wZXIgaG9vayBmb3Igc3ludGhlc2lzIGluIGNkazhzIChvciBtYXliZSBjb25zdHJ1Y3RzPylcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7IHZhbGlkYXRlOiAoKSA9PiB0aGlzLl92YWxpZGF0ZSgpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuXG4gICAgY29uc3QgY2ZuUmVzb3VyY2VzID0gdGhpcy5ub2RlLmZpbmRBbGwoKS5maWx0ZXIobiA9PiBhd3MuQ2ZuUmVzb3VyY2UuaXNDZm5SZXNvdXJjZShuKSkgYXMgYXdzLkNmblJlc291cmNlW107XG4gICAgY29uc3QgYXBpT2JqZWN0cyA9IHRoaXMubm9kZS5maW5kQWxsKCkuZmlsdGVyKG4gPT4gbiBpbnN0YW5jZW9mIGsuQXBpT2JqZWN0KSBhcyBrLkFwaU9iamVjdFtdO1xuXG4gICAgLy8gdHJhbnNmb3JtIGFsbCBjZm4gcmVzb3VyY2VzIHRvIGFjayByZXNvdXJjZXNcbiAgICB0aGlzLmFkYXB0ZXIudHJhbnNmb3JtUmVzb3VyY2VzKGNmblJlc291cmNlcyk7XG5cbiAgICAvLyB0cmFuc2Zvcm0gY2ZuIGF0dHJpYnV0ZXMgdG8gZmllbGQgZXhwb3J0c1xuICAgIHRoaXMuYWRhcHRlci50cmFuc2Zvcm1BdHRyaWJ1dGVzKGFwaU9iamVjdHMpO1xuXG4gICAgLy8gaGFjaywgd2UgbmVlZCB0byByZXR1cm4gc29tZXRoaW5nLi4uXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vbmtleSBwYXRjaGVzIHRoZSBjaGFydCB0byBhbHNvIGluaGVyaXQgZnJvbSBhbiBBV1MgQ0RLIHN0YWNrLlxuICAgKiBUaGlzIG1ha2VzIGl0IHNvIHRoZSBjaGFydCBjYW4gYmUgcGFzc2VkIGFzIGEgc2NvcGUgb2YgQVdTIENESyBjb25zdHJ1Y3RzLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5oZXJpdFN0YWNrKCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBTVEFDS19TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgY29uc3Qgc3RhY2tNZXRob2RzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmFkYXB0ZXIpKSk7XG4gICAgY29uc3QgYWRhcHRlclByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmFkYXB0ZXIpO1xuICAgIGZvciAoY29uc3QgcCBvZiBbLi4uc3RhY2tNZXRob2RzLCAuLi5hZGFwdGVyUHJvcGVydGllc10pIHtcblxuICAgICAgaWYgKFsnY29uc3RydWN0b3InLCAnbm9kZSddLmluY2x1ZGVzKHApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgdiA9ICh0aGlzLmFkYXB0ZXIgYXMgYW55KVtwXTtcblxuICAgICAgaWYgKHR5cGVvZih2KSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyB0aGlzIGlzLi4uYWR2ZW50dXJvdXM/IHllYWguLi5cbiAgICAgICAgY29uc3QgbiA9IG5ldyBGdW5jdGlvbignLi4uYXJncycsIGByZXR1cm4gdGhpcy5hZGFwdGVyLiR7cH0oLi4uYXJncyk7YCk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwLCB7IHZhbHVlOiBuIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHAsIHsgdmFsdWU6IHYgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIG5ldyBtYXBwZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVnaXN0ZXJNYXBwZXIobWFwcGVyOiBtYXBwZXJzLkNsb3VkRm9ybWF0aW9uUmVzb3VyY2VNYXBwZXIpIHtcbiAgICB0aGlzLmFkYXB0ZXIucmVnaXN0ZXJNYXBwZXIobWFwcGVyKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Resource is the Schema for the Resources API
|
|
5
|
+
*
|
|
6
|
+
* @schema Resource
|
|
7
|
+
*/
|
|
8
|
+
export declare class Resource extends ApiObject {
|
|
9
|
+
/**
|
|
10
|
+
* Returns the apiVersion and kind for "Resource"
|
|
11
|
+
*/
|
|
12
|
+
static readonly GVK: GroupVersionKind;
|
|
13
|
+
/**
|
|
14
|
+
* Renders a Kubernetes manifest for "Resource".
|
|
15
|
+
*
|
|
16
|
+
* This can be used to inline resource manifests inside other objects (e.g. as templates).
|
|
17
|
+
*
|
|
18
|
+
* @param props initialization props
|
|
19
|
+
*/
|
|
20
|
+
static manifest(props?: ResourceProps): any;
|
|
21
|
+
/**
|
|
22
|
+
* Defines a "Resource" API object
|
|
23
|
+
* @param scope the scope in which to define this object
|
|
24
|
+
* @param id a scope-local name for the object
|
|
25
|
+
* @param props initialization props
|
|
26
|
+
*/
|
|
27
|
+
constructor(scope: Construct, id: string, props?: ResourceProps);
|
|
28
|
+
/**
|
|
29
|
+
* Renders the object to Kubernetes JSON.
|
|
30
|
+
*/
|
|
31
|
+
toJson(): any;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Resource is the Schema for the Resources API
|
|
35
|
+
*
|
|
36
|
+
* @schema Resource
|
|
37
|
+
*/
|
|
38
|
+
export interface ResourceProps {
|
|
39
|
+
/**
|
|
40
|
+
* @schema Resource#metadata
|
|
41
|
+
*/
|
|
42
|
+
readonly metadata?: ApiObjectMetadata;
|
|
43
|
+
/**
|
|
44
|
+
* ResourceSpec defines the desired state of Resource.
|
|
45
|
+
*
|
|
46
|
+
* @schema Resource#spec
|
|
47
|
+
*/
|
|
48
|
+
readonly spec?: ResourceSpec;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Converts an object of type 'ResourceProps' to JSON representation.
|
|
52
|
+
*/
|
|
53
|
+
export declare function toJson_ResourceProps(obj: ResourceProps | undefined): Record<string, any> | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* ResourceSpec defines the desired state of Resource.
|
|
56
|
+
*
|
|
57
|
+
* @schema ResourceSpec
|
|
58
|
+
*/
|
|
59
|
+
export interface ResourceSpec {
|
|
60
|
+
/**
|
|
61
|
+
* A unique identifier to ensure the idempotency of the resource request. As a best practice, specify this token to ensure idempotency, so that Amazon Web Services Cloud Control API can accurately distinguish between request retries and new resource requests. You might retry a resource request to ensure that it was successfully received.
|
|
62
|
+
* A client token is valid for 36 hours once used. After that, a resource request with the same client token is treated as a new request.
|
|
63
|
+
* If you do not specify a client token, one is generated for inclusion in the request.
|
|
64
|
+
* For more information, see Ensuring resource operation requests are unique (https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations.html#resource-operations-idempotency) in the Amazon Web Services Cloud Control API User Guide.
|
|
65
|
+
*
|
|
66
|
+
* @schema ResourceSpec#clientToken
|
|
67
|
+
*/
|
|
68
|
+
readonly clientToken?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Structured data format representing the desired state of the resource, consisting of that resource's properties and their desired values.
|
|
71
|
+
* Cloud Control API currently supports JSON as a structured data format.
|
|
72
|
+
* Specify the desired state as one of the following:
|
|
73
|
+
* * A JSON blob
|
|
74
|
+
* * A local path containing the desired state in JSON data format
|
|
75
|
+
* For more information, see Composing the desired state of the resource (https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-create.html#resource-operations-create-desiredstate) in the Amazon Web Services Cloud Control API User Guide.
|
|
76
|
+
* For more information about the properties of a specific resource, refer to the related topic for the resource in the Resource and property types reference (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) in the Amazon Web Services CloudFormation Users Guide.
|
|
77
|
+
*
|
|
78
|
+
* @schema ResourceSpec#desiredState
|
|
79
|
+
*/
|
|
80
|
+
readonly desiredState: string;
|
|
81
|
+
/**
|
|
82
|
+
* The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) for Cloud Control API to use when performing this resource operation. The role specified must have the permissions required for this operation. The necessary permissions for each event handler are defined in the handlers (https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-handlers) section of the resource type definition schema (https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html).
|
|
83
|
+
* If you do not specify a role, Cloud Control API uses a temporary session created using your Amazon Web Services user credentials.
|
|
84
|
+
* For more information, see Specifying credentials (https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations.html#resource-operations-permissions) in the Amazon Web Services Cloud Control API User Guide.
|
|
85
|
+
*
|
|
86
|
+
* @schema ResourceSpec#roleARN
|
|
87
|
+
*/
|
|
88
|
+
readonly roleArn?: string;
|
|
89
|
+
/**
|
|
90
|
+
* The name of the resource type.
|
|
91
|
+
*
|
|
92
|
+
* @schema ResourceSpec#typeName
|
|
93
|
+
*/
|
|
94
|
+
readonly typeName: string;
|
|
95
|
+
/**
|
|
96
|
+
* For private resource types, the type version to use in this resource operation. If you do not specify a resource version, CloudFormation uses the default version.
|
|
97
|
+
*
|
|
98
|
+
* @schema ResourceSpec#typeVersionID
|
|
99
|
+
*/
|
|
100
|
+
readonly typeVersionId?: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Converts an object of type 'ResourceSpec' to JSON representation.
|
|
104
|
+
*/
|
|
105
|
+
export declare function toJson_ResourceSpec(obj: ResourceSpec | undefined): Record<string, any> | undefined;
|
|
106
|
+
//# sourceMappingURL=cloudcontrol.services.k8s.aws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudcontrol.services.k8s.aws.d.ts","sourceRoot":"","sources":["../../src/imports/cloudcontrol.services.k8s.aws.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACrC;;OAEG;IACH,gBAAuB,GAAG,EAAE,gBAAgB,CAG1C;IAEF;;;;;;OAMG;WACW,QAAQ,CAAC,KAAK,GAAE,aAAkB,GAAG,GAAG;IAOtD;;;;;OAKG;gBACgB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,aAAkB;IAO1E;;OAEG;IACI,MAAM,IAAI,GAAG;CAQrB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;CAE9B;AAED;;GAEG;AAEH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAQpG;AAGD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAEjC;AAED;;GAEG;AAEH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAWlG"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toJson_ResourceSpec = exports.toJson_ResourceProps = exports.Resource = void 0;
|
|
4
|
+
// generated by cdk8s
|
|
5
|
+
const cdk8s_1 = require("cdk8s");
|
|
6
|
+
/**
|
|
7
|
+
* Resource is the Schema for the Resources API
|
|
8
|
+
*
|
|
9
|
+
* @schema Resource
|
|
10
|
+
*/
|
|
11
|
+
class Resource extends cdk8s_1.ApiObject {
|
|
12
|
+
/**
|
|
13
|
+
* Defines a "Resource" API object
|
|
14
|
+
* @param scope the scope in which to define this object
|
|
15
|
+
* @param id a scope-local name for the object
|
|
16
|
+
* @param props initialization props
|
|
17
|
+
*/
|
|
18
|
+
constructor(scope, id, props = {}) {
|
|
19
|
+
super(scope, id, {
|
|
20
|
+
...Resource.GVK,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Renders a Kubernetes manifest for "Resource".
|
|
26
|
+
*
|
|
27
|
+
* This can be used to inline resource manifests inside other objects (e.g. as templates).
|
|
28
|
+
*
|
|
29
|
+
* @param props initialization props
|
|
30
|
+
*/
|
|
31
|
+
static manifest(props = {}) {
|
|
32
|
+
return {
|
|
33
|
+
...Resource.GVK,
|
|
34
|
+
...toJson_ResourceProps(props),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Renders the object to Kubernetes JSON.
|
|
39
|
+
*/
|
|
40
|
+
toJson() {
|
|
41
|
+
const resolved = super.toJson();
|
|
42
|
+
return {
|
|
43
|
+
...Resource.GVK,
|
|
44
|
+
...toJson_ResourceProps(resolved),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.Resource = Resource;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the apiVersion and kind for "Resource"
|
|
51
|
+
*/
|
|
52
|
+
Resource.GVK = {
|
|
53
|
+
apiVersion: 'cloudcontrol.services.k8s.aws/v1alpha1',
|
|
54
|
+
kind: 'Resource',
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Converts an object of type 'ResourceProps' to JSON representation.
|
|
58
|
+
*/
|
|
59
|
+
/* eslint-disable max-len, quote-props */
|
|
60
|
+
function toJson_ResourceProps(obj) {
|
|
61
|
+
if (obj === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const result = {
|
|
65
|
+
'metadata': obj.metadata,
|
|
66
|
+
'spec': toJson_ResourceSpec(obj.spec),
|
|
67
|
+
};
|
|
68
|
+
// filter undefined values
|
|
69
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
70
|
+
}
|
|
71
|
+
exports.toJson_ResourceProps = toJson_ResourceProps;
|
|
72
|
+
/**
|
|
73
|
+
* Converts an object of type 'ResourceSpec' to JSON representation.
|
|
74
|
+
*/
|
|
75
|
+
/* eslint-disable max-len, quote-props */
|
|
76
|
+
function toJson_ResourceSpec(obj) {
|
|
77
|
+
if (obj === undefined) {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
const result = {
|
|
81
|
+
'clientToken': obj.clientToken,
|
|
82
|
+
'desiredState': obj.desiredState,
|
|
83
|
+
'roleARN': obj.roleArn,
|
|
84
|
+
'typeName': obj.typeName,
|
|
85
|
+
'typeVersionID': obj.typeVersionId,
|
|
86
|
+
};
|
|
87
|
+
// filter undefined values
|
|
88
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
89
|
+
}
|
|
90
|
+
exports.toJson_ResourceSpec = toJson_ResourceSpec;
|
|
91
|
+
/* eslint-enable max-len, quote-props */
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRjb250cm9sLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9jbG91ZGNvbnRyb2wuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxpQkFBUztJQXVCckM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF1QixFQUFFO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxRQUFRLENBQUMsR0FBRztZQUNmLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUF1QixFQUFFO1FBQzlDLE9BQU87WUFDTCxHQUFHLFFBQVEsQ0FBQyxHQUFHO1lBQ2YsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsUUFBUSxDQUFDLEdBQUc7WUFDZixHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztTQUNsQyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsNEJBK0NDO0FBOUNDOztHQUVHO0FBQ29CLFlBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLHdDQUF3QztJQUNwRCxJQUFJLEVBQUUsVUFBVTtDQUNqQixDQUFDO0FBOERKOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLG9CQUFvQixDQUFDLEdBQThCO0lBQ2pFLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDeEIsTUFBTSxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7S0FDdEMsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUkQsb0RBUUM7QUF5REQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsbUJBQW1CLENBQUMsR0FBNkI7SUFDL0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLGFBQWEsRUFBRSxHQUFHLENBQUMsV0FBVztRQUM5QixjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3RCLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN4QixlQUFlLEVBQUUsR0FBRyxDQUFDLGFBQWE7S0FDbkMsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBWEQsa0RBV0M7QUFDRCx3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZW5lcmF0ZWQgYnkgY2RrOHNcbmltcG9ydCB7IEFwaU9iamVjdCwgQXBpT2JqZWN0TWV0YWRhdGEsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuXG4vKipcbiAqIFJlc291cmNlIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBSZXNvdXJjZXMgQVBJXG4gKlxuICogQHNjaGVtYSBSZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBBcGlPYmplY3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCJSZXNvdXJjZVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdWSzogR3JvdXBWZXJzaW9uS2luZCA9IHtcbiAgICBhcGlWZXJzaW9uOiAnY2xvdWRjb250cm9sLnNlcnZpY2VzLms4cy5hd3MvdjFhbHBoYTEnLFxuICAgIGtpbmQ6ICdSZXNvdXJjZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIlJlc291cmNlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IFJlc291cmNlUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlJlc291cmNlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9SZXNvdXJjZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIlJlc291cmNlXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLlJlc291cmNlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5SZXNvdXJjZS5HVkssXG4gICAgICAuLi50b0pzb25fUmVzb3VyY2VQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFJlc291cmNlIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBSZXNvdXJjZXMgQVBJXG4gKlxuICogQHNjaGVtYSBSZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBSZXNvdXJjZSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogUmVzb3VyY2VTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgUmVzb3VyY2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUmVzb3VyY2Ujc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IFJlc291cmNlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdSZXNvdXJjZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9SZXNvdXJjZVByb3BzKG9iajogUmVzb3VyY2VQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX1Jlc291cmNlU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVzb3VyY2VTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgUmVzb3VyY2UuXG4gKlxuICogQHNjaGVtYSBSZXNvdXJjZVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVNwZWMge1xuICAvKipcbiAgICogQSB1bmlxdWUgaWRlbnRpZmllciB0byBlbnN1cmUgdGhlIGlkZW1wb3RlbmN5IG9mIHRoZSByZXNvdXJjZSByZXF1ZXN0LiBBcyBhIGJlc3QgcHJhY3RpY2UsIHNwZWNpZnkgdGhpcyB0b2tlbiB0byBlbnN1cmUgaWRlbXBvdGVuY3ksIHNvIHRoYXQgQW1hem9uIFdlYiBTZXJ2aWNlcyBDbG91ZCBDb250cm9sIEFQSSBjYW4gYWNjdXJhdGVseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHJlcXVlc3QgcmV0cmllcyBhbmQgbmV3IHJlc291cmNlIHJlcXVlc3RzLiBZb3UgbWlnaHQgcmV0cnkgYSByZXNvdXJjZSByZXF1ZXN0IHRvIGVuc3VyZSB0aGF0IGl0IHdhcyBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQuXG4gICAqIEEgY2xpZW50IHRva2VuIGlzIHZhbGlkIGZvciAzNiBob3VycyBvbmNlIHVzZWQuIEFmdGVyIHRoYXQsIGEgcmVzb3VyY2UgcmVxdWVzdCB3aXRoIHRoZSBzYW1lIGNsaWVudCB0b2tlbiBpcyB0cmVhdGVkIGFzIGEgbmV3IHJlcXVlc3QuXG4gICAqIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIGNsaWVudCB0b2tlbiwgb25lIGlzIGdlbmVyYXRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSByZXF1ZXN0LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEVuc3VyaW5nIHJlc291cmNlIG9wZXJhdGlvbiByZXF1ZXN0cyBhcmUgdW5pcXVlIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xvdWRjb250cm9sYXBpL2xhdGVzdC91c2VyZ3VpZGUvcmVzb3VyY2Utb3BlcmF0aW9ucy5odG1sI3Jlc291cmNlLW9wZXJhdGlvbnMtaWRlbXBvdGVuY3kpIGluIHRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIENsb3VkIENvbnRyb2wgQVBJIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUmVzb3VyY2VTcGVjI2NsaWVudFRva2VuXG4gICAqL1xuICByZWFkb25seSBjbGllbnRUb2tlbj86IHN0cmluZztcblxuICAvKipcbiAgICogU3RydWN0dXJlZCBkYXRhIGZvcm1hdCByZXByZXNlbnRpbmcgdGhlIGRlc2lyZWQgc3RhdGUgb2YgdGhlIHJlc291cmNlLCBjb25zaXN0aW5nIG9mIHRoYXQgcmVzb3VyY2UncyBwcm9wZXJ0aWVzIGFuZCB0aGVpciBkZXNpcmVkIHZhbHVlcy5cbiAgICogQ2xvdWQgQ29udHJvbCBBUEkgY3VycmVudGx5IHN1cHBvcnRzIEpTT04gYXMgYSBzdHJ1Y3R1cmVkIGRhdGEgZm9ybWF0LlxuICAgKiBTcGVjaWZ5IHRoZSBkZXNpcmVkIHN0YXRlIGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEEgSlNPTiBibG9iXG4gICAqICogQSBsb2NhbCBwYXRoIGNvbnRhaW5pbmcgdGhlIGRlc2lyZWQgc3RhdGUgaW4gSlNPTiBkYXRhIGZvcm1hdFxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIENvbXBvc2luZyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiB0aGUgcmVzb3VyY2UgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbG91ZGNvbnRyb2xhcGkvbGF0ZXN0L3VzZXJndWlkZS9yZXNvdXJjZS1vcGVyYXRpb25zLWNyZWF0ZS5odG1sI3Jlc291cmNlLW9wZXJhdGlvbnMtY3JlYXRlLWRlc2lyZWRzdGF0ZSkgaW4gdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgQ2xvdWQgQ29udHJvbCBBUEkgVXNlciBHdWlkZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb3BlcnRpZXMgb2YgYSBzcGVjaWZpYyByZXNvdXJjZSwgcmVmZXIgdG8gdGhlIHJlbGF0ZWQgdG9waWMgZm9yIHRoZSByZXNvdXJjZSBpbiB0aGUgUmVzb3VyY2UgYW5kIHByb3BlcnR5IHR5cGVzIHJlZmVyZW5jZSAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXRlbXBsYXRlLXJlc291cmNlLXR5cGUtcmVmLmh0bWwpIGluIHRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIENsb3VkRm9ybWF0aW9uIFVzZXJzIEd1aWRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFJlc291cmNlU3BlYyNkZXNpcmVkU3RhdGVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2lyZWRTdGF0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBmb3IgQ2xvdWQgQ29udHJvbCBBUEkgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyB0aGlzIHJlc291cmNlIG9wZXJhdGlvbi4gVGhlIHJvbGUgc3BlY2lmaWVkIG11c3QgaGF2ZSB0aGUgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIHRoaXMgb3BlcmF0aW9uLiBUaGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIGZvciBlYWNoIGV2ZW50IGhhbmRsZXIgYXJlIGRlZmluZWQgaW4gdGhlIGhhbmRsZXJzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xvdWRmb3JtYXRpb24tY2xpL2xhdGVzdC91c2VyZ3VpZGUvcmVzb3VyY2UtdHlwZS1zY2hlbWEuaHRtbCNzY2hlbWEtcHJvcGVydGllcy1oYW5kbGVycykgc2VjdGlvbiBvZiB0aGUgcmVzb3VyY2UgdHlwZSBkZWZpbml0aW9uIHNjaGVtYSAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nsb3VkZm9ybWF0aW9uLWNsaS9sYXRlc3QvdXNlcmd1aWRlL3Jlc291cmNlLXR5cGUtc2NoZW1hLmh0bWwpLlxuICAgKiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSByb2xlLCBDbG91ZCBDb250cm9sIEFQSSB1c2VzIGEgdGVtcG9yYXJ5IHNlc3Npb24gY3JlYXRlZCB1c2luZyB5b3VyIEFtYXpvbiBXZWIgU2VydmljZXMgdXNlciBjcmVkZW50aWFscy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBTcGVjaWZ5aW5nIGNyZWRlbnRpYWxzIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xvdWRjb250cm9sYXBpL2xhdGVzdC91c2VyZ3VpZGUvcmVzb3VyY2Utb3BlcmF0aW9ucy5odG1sI3Jlc291cmNlLW9wZXJhdGlvbnMtcGVybWlzc2lvbnMpIGluIHRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIENsb3VkIENvbnRyb2wgQVBJIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUmVzb3VyY2VTcGVjI3JvbGVBUk5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSB0eXBlLlxuICAgKlxuICAgKiBAc2NoZW1hIFJlc291cmNlU3BlYyN0eXBlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRm9yIHByaXZhdGUgcmVzb3VyY2UgdHlwZXMsIHRoZSB0eXBlIHZlcnNpb24gdG8gdXNlIGluIHRoaXMgcmVzb3VyY2Ugb3BlcmF0aW9uLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSByZXNvdXJjZSB2ZXJzaW9uLCBDbG91ZEZvcm1hdGlvbiB1c2VzIHRoZSBkZWZhdWx0IHZlcnNpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUmVzb3VyY2VTcGVjI3R5cGVWZXJzaW9uSURcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVWZXJzaW9uSWQ/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUmVzb3VyY2VTcGVjJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9SZXNvdXJjZVNwZWMob2JqOiBSZXNvdXJjZVNwZWMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdjbGllbnRUb2tlbic6IG9iai5jbGllbnRUb2tlbixcbiAgICAnZGVzaXJlZFN0YXRlJzogb2JqLmRlc2lyZWRTdGF0ZSxcbiAgICAncm9sZUFSTic6IG9iai5yb2xlQXJuLFxuICAgICd0eXBlTmFtZSc6IG9iai50eXBlTmFtZSxcbiAgICAndHlwZVZlcnNpb25JRCc6IG9iai50eXBlVmVyc2lvbklkLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4iXX0=
|