cdk-import 0.1.4 → 0.1.8
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/lib/cfn-resource-generator.js +43 -6
- package/package.json +7 -7
- package/playground/eks.json +0 -13
- package/playground/eks.schema.json +0 -298
- package/playground/index.js +0 -12
|
@@ -15,14 +15,41 @@ class CfnResourceGenerator {
|
|
|
15
15
|
* @param schema the schema of the resource type for input and output properties
|
|
16
16
|
*/
|
|
17
17
|
constructor(typeName, typeDef, schema) {
|
|
18
|
+
var _a;
|
|
18
19
|
this.typeName = typeName;
|
|
19
20
|
this.typeDef = typeDef;
|
|
20
21
|
this.schema = schema;
|
|
21
22
|
this.sanitizedTypeName = (0, util_1.sanitizeTypeName)(typeName);
|
|
22
|
-
this.resourceAttributes = this.schema.readOnlyProperties ? this.schema.readOnlyProperties.map((prop) => prop.replace(/^\/properties\//, '')) : [];
|
|
23
|
-
this.resourceProperties = Object.keys(this.schema.properties).filter(prop => this.resourceAttributes.indexOf(prop) === -1);
|
|
23
|
+
// this.resourceAttributes = this.schema.readOnlyProperties ? this.schema.readOnlyProperties.map((prop: string) => prop.replace(/^\/properties\//, '')) : [];
|
|
24
|
+
// this.resourceProperties = Object.keys(this.schema.properties).filter(prop => this.resourceAttributes.indexOf(prop) === -1);
|
|
24
25
|
this.constructClassName = `Cfn${this.sanitizedTypeName}`;
|
|
25
26
|
this.propsStructName = `${this.constructClassName}Props`;
|
|
27
|
+
this.resourceAttributes = new Array();
|
|
28
|
+
this.resourceProperties = new Array();
|
|
29
|
+
const props = (_a = this.schema.properties) !== null && _a !== void 0 ? _a : {};
|
|
30
|
+
const attributeNames = this.schema.readOnlyProperties
|
|
31
|
+
? this.schema.readOnlyProperties.map((prop) => prop.replace(/^\/properties\//, ''))
|
|
32
|
+
: [];
|
|
33
|
+
for (const attr of attributeNames) {
|
|
34
|
+
const def = props[attr];
|
|
35
|
+
if (!def) {
|
|
36
|
+
console.warn(`Unresolvable read-only property (attribute) ${typeName}.${attr}`);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// verify that the type of the attribute is a primitive
|
|
40
|
+
if (def.type !== 'string' && def.type !== 'number') {
|
|
41
|
+
console.warn(`Unsupported type ${JSON.stringify(def)} for read-only property (attribute) ${typeName}.${attr}`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
this.resourceAttributes.push(attr);
|
|
45
|
+
}
|
|
46
|
+
for (const prop of Object.keys(props)) {
|
|
47
|
+
// if this is a read-only property, consider it an attribute
|
|
48
|
+
if (attributeNames.includes(prop)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
this.resourceProperties.push(prop);
|
|
52
|
+
}
|
|
26
53
|
}
|
|
27
54
|
/**
|
|
28
55
|
* Render the type into a TypeScript class fil defining the props and the L1 construct
|
|
@@ -62,7 +89,9 @@ class CfnResourceGenerator {
|
|
|
62
89
|
code.line(' *');
|
|
63
90
|
code.line(` * @cloudformationResource ${this.typeName}`);
|
|
64
91
|
code.line(' * @stability external');
|
|
65
|
-
|
|
92
|
+
if (this.typeDef.SourceUrl) {
|
|
93
|
+
code.line(` * @link ${this.typeDef.SourceUrl}`);
|
|
94
|
+
}
|
|
66
95
|
code.line(' */');
|
|
67
96
|
code.openBlock(`export class ${this.constructClassName} extends cdk.CfnResource`);
|
|
68
97
|
code.line('/**');
|
|
@@ -77,14 +106,18 @@ class CfnResourceGenerator {
|
|
|
77
106
|
if (this.schema.properties[prop].description) {
|
|
78
107
|
code.line(` * ${this.schema.properties[prop].description}`);
|
|
79
108
|
}
|
|
80
|
-
|
|
109
|
+
if (this.typeDef.SourceUrl) {
|
|
110
|
+
code.line(` * @link ${this.typeDef.SourceUrl}`);
|
|
111
|
+
}
|
|
81
112
|
code.line(' */');
|
|
82
113
|
code.line(`public readonly ${(0, case_1.camel)(prop)}: ${this.getTypeOfProperty(prop)}${optionalMarker};`);
|
|
83
114
|
}
|
|
84
115
|
for (const prop of this.resourceAttributes) {
|
|
85
116
|
code.line('/**');
|
|
86
117
|
code.line(` * Attribute \`${this.typeName}.${prop}\``);
|
|
87
|
-
|
|
118
|
+
if (this.typeDef.SourceUrl) {
|
|
119
|
+
code.line(` * @link ${this.typeDef.SourceUrl}`);
|
|
120
|
+
}
|
|
88
121
|
code.line(' */');
|
|
89
122
|
code.line(`public readonly attr${(0, case_1.pascal)(prop)}: ${this.getTypeOfProperty(prop)};`);
|
|
90
123
|
}
|
|
@@ -134,6 +167,10 @@ class CfnResourceGenerator {
|
|
|
134
167
|
return 'string';
|
|
135
168
|
case 'array':
|
|
136
169
|
return `${this.getTypeFromSchema(prop.items)}[]`;
|
|
170
|
+
case 'number':
|
|
171
|
+
return 'number';
|
|
172
|
+
case 'integer':
|
|
173
|
+
return 'number';
|
|
137
174
|
default:
|
|
138
175
|
return 'any';
|
|
139
176
|
}
|
|
@@ -145,4 +182,4 @@ class CfnResourceGenerator {
|
|
|
145
182
|
}
|
|
146
183
|
}
|
|
147
184
|
exports.CfnResourceGenerator = CfnResourceGenerator;
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFxQztBQUNyQyxpQ0FBaUM7QUFFakMsaUNBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFRL0I7Ozs7O09BS0c7SUFDSCxZQUE2QixRQUFnQixFQUFtQixPQUFpQixFQUFtQixNQUFXO1FBQWxGLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQzdHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLHVCQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUosSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxD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QUFDO0lBQ2YsQ0FBQztDQUVGO0FBM0pELG9EQTJKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhbWVsLCBwYXNjYWwgfSBmcm9tICdjYXNlJztcbmltcG9ydCAqIGFzIGoyaiBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5pbXBvcnQgeyBzYW5pdGl6ZVR5cGVOYW1lIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCB0eXBlcyBmb3IgdGhlIEwxIGNvbnN0cnVjdCBvZiB0aGUgZ2l2ZW4gcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgY2xhc3MgQ2ZuUmVzb3VyY2VHZW5lcmF0b3Ige1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkVHlwZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlUHJvcGVydGllczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3RydWN0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNTdHJ1Y3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlTmFtZSB0aGUgbmFtZSBvZiB0aGUgQ0ZOIHJlc291cmNlIHR5cGUgKGUuZy4gQVdTUVM6OkVLUzo6Q2x1c3RlcilcbiAgICogQHBhcmFtIHR5cGVEZWYgdGhlIHR5cGUgaW5mbyBjb250YWluaW5nIHRoZSBzb3VyY2UgdXJsXG4gICAqIEBwYXJhbSBzY2hlbWEgdGhlIHNjaGVtYSBvZiB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGVOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgdHlwZURlZjogVHlwZUluZm8sIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLnNhbml0aXplZFR5cGVOYW1lID0gc2FuaXRpemVUeXBlTmFtZSh0eXBlTmFtZSk7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMgPyB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMubWFwKChwcm9wOiBzdHJpbmcpID0+IHByb3AucmVwbGFjZSgvXlxcL3Byb3BlcnRpZXNcXC8vLCAnJykpIDogW107XG4gICAgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzKS5maWx0ZXIocHJvcCA9PiB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5pbmRleE9mKHByb3ApID09PSAtMSk7XG4gICAgdGhpcy5jb25zdHJ1Y3RDbGFzc05hbWUgPSBgQ2ZuJHt0aGlzLnNhbml0aXplZFR5cGVOYW1lfWA7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2A7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbCBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB0aGlzLmVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEltcG9ydHMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJy8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0Jyk7XG4gICAgY29kZS5saW5lKFwiaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdERlZmluaXRpb25UeXBlcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvbnN0IGdlbiA9IG5ldyBqMmouVHlwZUdlbmVyYXRvcih7XG4gICAgICBkZWZpbml0aW9uczogdGhpcy5zY2hlbWEuZGVmaW5pdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2NoZW1hKSk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICAvLyBSZW1vdmUgYXR0cmlidXRlcyB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIGJ1dCBhcmUgdXNlZCBhcyBhdHRyaWJ1dGVzXG4gICAgICAvLyBUaGVzZSBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhlIFByb3BzIHN0cnVjdFxuICAgICAgZGVsZXRlIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdO1xuICAgIH1cblxuICAgIGdlbi5lbWl0VHlwZSh0aGlzLnByb3BzU3RydWN0TmFtZSwgc2NoZW1hKTtcblxuICAgIGdlbi5yZW5kZXJUb0NvZGUoY29kZSk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBBIENsb3VkRm9ybWF0aW9uIFxcYCR7dGhpcy50eXBlTmFtZX1cXGBgKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKGAgKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSAke3RoaXMudHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKiBAc3RhYmlsaXR5IGV4dGVybmFsJyk7XG4gICAgY29kZS5saW5lKGAgKiBAbGluayAke3RoaXMudHlwZURlZi5Tb3VyY2VVcmx9YCk7XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgY2RrLkNmblJlc291cmNlYCk7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoJyogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy4nKTtcbiAgICBjb2RlLmxpbmUoJyovJyk7XG4gICAgY29kZS5saW5lKGBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENGTl9SRVNPVVJDRV9UWVBFX05BTUUgPSBcIiR7dGhpcy50eXBlTmFtZX1cIjtgKTtcbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlUHJvcGVydGllcykge1xuICAgICAgY29uc3Qgb3B0aW9uYWxNYXJrZXIgPSB0aGlzLnNjaGVtYS5yZXF1aXJlZD8uaW5kZXhPZihwcm9wKSA9PT0gLTEgPyAnIHwgdW5kZWZpbmVkJyA6ICcnO1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogXFxgJHt0aGlzLnR5cGVOYW1lfS4ke3Byb3B9XFxgYCk7XG4gICAgICBpZiAodGhpcy5zY2hlbWEucHJvcGVydGllc1twcm9wXS5kZXNjcmlwdGlvbikge1xuICAgICAgICBjb2RlLmxpbmUoYCAqICR7dGhpcy5zY2hlbWEucHJvcGVydGllc1twcm9wXS5kZXNjcmlwdGlvbn1gKTtcbiAgICAgIH1cbiAgICAgIGNvZGUubGluZShgICogQGxpbmsgJHt0aGlzLnR5cGVEZWYuU291cmNlVXJsfWApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5ICR7Y2FtZWwocHJvcCl9OiAke3RoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCl9JHtvcHRpb25hbE1hcmtlcn07YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBBdHRyaWJ1dGUgXFxgJHt0aGlzLnR5cGVOYW1lfS4ke3Byb3B9XFxgYCk7XG4gICAgICBjb2RlLmxpbmUoYCAqIEBsaW5rICR7dGhpcy50eXBlRGVmLlNvdXJjZVVybH1gKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyByZWFkb25seSBhdHRyJHtwYXNjYWwocHJvcCl9OiAke3RoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCl9O2ApO1xuICAgIH1cblxuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIENyZWF0ZSBhIG5ldyBcXGAke3RoaXMudHlwZU5hbWV9XFxgLmApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZCcpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZScpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllcycpO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHt0aGlzLnByb3BzU3RydWN0TmFtZX0pYCk7XG4gICAgY29kZS5saW5lKGBzdXBlcihzY29wZSwgaWQsIHsgdHlwZTogJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX0uQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSwgcHJvcGVydGllczogdG9Kc29uXyR7dGhpcy5wcm9wc1N0cnVjdE5hbWV9KHByb3BzKSEgfSk7YCk7XG4gICAgY29kZS5saW5lKCcnKTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMpIHtcbiAgICAgIGNvZGUubGluZShgdGhpcy4ke2NhbWVsKHByb3ApfSA9IHByb3BzLiR7Y2FtZWwocHJvcCl9O2ApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGBhdHRyJHtwYXNjYWwocHJvcCl9YDtcbiAgICAgIGNvZGUubGluZShgdGhpcy4ke3Byb3BlcnR5TmFtZX0gPSAke3RoaXMucmVuZGVyR2V0QXR0KHByb3ApfTtgKTtcbiAgICB9XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyR2V0QXR0KHByb3A6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYXR0cmlidXRlVHlwZSA9IHRoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCk7XG4gICAgY29uc3QgY29uc3RydWN0b3JBcmd1bWVudHMgPSBgdGhpcy5nZXRBdHQoJyR7cHJvcH0nKWA7XG4gICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYGNkay5Ub2tlbi5hc1N0cmluZygke2NvbnN0cnVjdG9yQXJndW1lbnRzfSlgO1xuICAgIH1cbiAgICBpZiAoYXR0cmlidXRlVHlwZSA9PT0gJ3N0cmluZ1tdJykge1xuICAgICAgcmV0dXJuIGBjZGsuVG9rZW4uYXNMaXN0KCR7Y29uc3RydWN0b3JBcmd1bWVudHN9KWA7XG4gICAgfVxuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGBjZGsuVG9rZW4uYXNOdW1iZXIoJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pYDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yQXJndW1lbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlT2ZQcm9wZXJ0eShwcm9wOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlRnJvbVNjaGVtYSh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHlwZUZyb21TY2hlbWEocHJvcDogYW55KTogc3RyaW5nIHtcbiAgICBpZiAocHJvcC50eXBlKSB7XG4gICAgICBzd2l0Y2ggKHByb3AudHlwZSkge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICAgIHJldHVybiBgJHt0aGlzLmdldFR5cGVGcm9tU2NoZW1hKHByb3AuaXRlbXMpfVtdYDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2FueSc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wLmhhc093blByb3BlcnR5KCckcmVmJykpIHtcbiAgICAgIHJldHVybiBwcm9wLiRyZWYucmVwbGFjZSgvI1xcL2RlZmluaXRpb25zXFwvLywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gJ2FueSc7XG4gIH1cblxufVxuIl19
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFxQztBQUNyQyxpQ0FBaUM7QUFFakMsaUNBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFRL0I7Ozs7O09BS0c7SUFDSCxZQUE2QixRQUFnQixFQUFtQixPQUFpQixFQUFtQixNQUFXOztRQUFsRixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQW1CLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUM3RyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCw2SkFBNko7UUFDN0osOEhBQThIO1FBQzlILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLE9BQU8sQ0FBQztRQUV6RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUU5QyxNQUFNLEtBQUssR0FBRyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxtQ0FBSSxFQUFFLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0I7WUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLENBQUMsQ0FBQyxF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c0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FtZWwsIHBhc2NhbCB9IGZyb20gJ2Nhc2UnO1xuaW1wb3J0ICogYXMgajJqIGZyb20gJ2pzb24yanNpaSc7XG5pbXBvcnQgeyBUeXBlSW5mbyB9IGZyb20gJy4vdHlwZS1pbmZvJztcbmltcG9ydCB7IHNhbml0aXplVHlwZU5hbWUgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEdlbmVyYXRvciB0byBlbWl0IGNsYXNzZXMgYW5kIHR5cGVzIGZvciB0aGUgTDEgY29uc3RydWN0IG9mIHRoZSBnaXZlbiByZXNvdXJjZSB0eXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBDZm5SZXNvdXJjZUdlbmVyYXRvciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZWRUeXBlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlQXR0cmlidXRlczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VQcm9wZXJ0aWVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25zdHJ1Y3RDbGFzc05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wc1N0cnVjdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHR5cGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBDRk4gcmVzb3VyY2UgdHlwZSAoZS5nLiBBV1NRUzo6RUtTOjpDbHVzdGVyKVxuICAgKiBAcGFyYW0gdHlwZURlZiB0aGUgdHlwZSBpbmZvIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSB1cmxcbiAgICogQHBhcmFtIHNjaGVtYSB0aGUgc2NoZW1hIG9mIHRoZSByZXNvdXJjZSB0eXBlIGZvciBpbnB1dCBhbmQgb3V0cHV0IHByb3BlcnRpZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZU5hbWU6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSB0eXBlRGVmOiBUeXBlSW5mbywgcHJpdmF0ZSByZWFkb25seSBzY2hlbWE6IGFueSkge1xuICAgIHRoaXMuc2FuaXRpemVkVHlwZU5hbWUgPSBzYW5pdGl6ZVR5cGVOYW1lKHR5cGVOYW1lKTtcbiAgICAvLyB0aGlzLnJlc291cmNlQXR0cmlidXRlcyA9IHRoaXMuc2NoZW1hLnJlYWRPbmx5UHJvcGVydGllcyA/IHRoaXMuc2NoZW1hLnJlYWRPbmx5UHJvcGVydGllcy5tYXAoKHByb3A6IHN0cmluZykgPT4gcHJvcC5yZXBsYWNlKC9eXFwvcHJvcGVydGllc1xcLy8sICcnKSkgOiBbXTtcbiAgICAvLyB0aGlzLnJlc291cmNlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpLmZpbHRlcihwcm9wID0+IHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmluZGV4T2YocHJvcCkgPT09IC0xKTtcbiAgICB0aGlzLmNvbnN0cnVjdENsYXNzTmFtZSA9IGBDZm4ke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9YDtcbiAgICB0aGlzLnByb3BzU3RydWN0TmFtZSA9IGAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfVByb3BzYDtcblxuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICB0aGlzLnJlc291cmNlUHJvcGVydGllcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuc2NoZW1hLnByb3BlcnRpZXMgPz8ge307XG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdID0gdGhpcy5zY2hlbWEucmVhZE9ubHlQcm9wZXJ0aWVzXG4gICAgICA/IHRoaXMuc2NoZW1hLnJlYWRPbmx5UHJvcGVydGllcy5tYXAoKHByb3A6IHN0cmluZykgPT4gcHJvcC5yZXBsYWNlKC9eXFwvcHJvcGVydGllc1xcLy8sICcnKSlcbiAgICAgIDogW107XG5cbiAgICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGNvbnN0IGRlZiA9IHByb3BzW2F0dHJdO1xuICAgICAgaWYgKCFkZWYpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBVbnJlc29sdmFibGUgcmVhZC1vbmx5IHByb3BlcnR5IChhdHRyaWJ1dGUpICR7dHlwZU5hbWV9LiR7YXR0cn1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHZlcmlmeSB0aGF0IHRoZSB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUgaXMgYSBwcmltaXRpdmVcbiAgICAgIGlmIChkZWYudHlwZSAhPT0gJ3N0cmluZycgJiYgZGVmLnR5cGUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdHlwZSAke0pTT04uc3RyaW5naWZ5KGRlZil9IGZvciByZWFkLW9ubHkgcHJvcGVydHkgKGF0dHJpYnV0ZSkgJHt0eXBlTmFtZX0uJHthdHRyfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMucHVzaChhdHRyKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMocHJvcHMpKSB7XG4gICAgICAvLyBpZiB0aGlzIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5LCBjb25zaWRlciBpdCBhbiBhdHRyaWJ1dGVcbiAgICAgIGlmIChhdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbCBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB0aGlzLmVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEltcG9ydHMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJy8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0Jyk7XG4gICAgY29kZS5saW5lKFwiaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdERlZmluaXRpb25UeXBlcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvbnN0IGdlbiA9IG5ldyBqMmouVHlwZUdlbmVyYXRvcih7XG4gICAgICBkZWZpbml0aW9uczogdGhpcy5zY2hlbWEuZGVmaW5pdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2NoZW1hKSk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICAvLyBSZW1vdmUgYXR0cmlidXRlcyB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIGJ1dCBhcmUgdXNlZCBhcyBhdHRyaWJ1dGVzXG4gICAgICAvLyBUaGVzZSBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhlIFByb3BzIHN0cnVjdFxuICAgICAgZGVsZXRlIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdO1xuICAgIH1cblxuICAgIGdlbi5lbWl0VHlwZSh0aGlzLnByb3BzU3RydWN0TmFtZSwgc2NoZW1hKTtcblxuICAgIGdlbi5yZW5kZXJUb0NvZGUoY29kZSk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBBIENsb3VkRm9ybWF0aW9uIFxcYCR7dGhpcy50eXBlTmFtZX1cXGBgKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKGAgKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSAke3RoaXMudHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKiBAc3RhYmlsaXR5IGV4dGVybmFsJyk7XG4gICAgaWYgKHRoaXMudHlwZURlZi5Tb3VyY2VVcmwpIHtcbiAgICAgIGNvZGUubGluZShgICogQGxpbmsgJHt0aGlzLnR5cGVEZWYuU291cmNlVXJsfWApO1xuICAgIH1cbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX0gZXh0ZW5kcyBjZGsuQ2ZuUmVzb3VyY2VgKTtcbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZSgnKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLicpO1xuICAgIGNvZGUubGluZSgnKi8nKTtcbiAgICBjb2RlLmxpbmUoYHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSA9IFwiJHt0aGlzLnR5cGVOYW1lfVwiO2ApO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VQcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBvcHRpb25hbE1hcmtlciA9IHRoaXMuc2NoZW1hLnJlcXVpcmVkPy5pbmRleE9mKHByb3ApID09PSAtMSA/ICcgfCB1bmRlZmluZWQnIDogJyc7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBcXGAke3RoaXMudHlwZU5hbWV9LiR7cHJvcH1cXGBgKTtcbiAgICAgIGlmICh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvZGUubGluZShgICogJHt0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdLmRlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHlwZURlZi5Tb3VyY2VVcmwpIHtcbiAgICAgICAgY29kZS5saW5lKGAgKiBAbGluayAke3RoaXMudHlwZURlZi5Tb3VyY2VVcmx9YCk7XG4gICAgICB9XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGBwdWJsaWMgcmVhZG9ubHkgJHtjYW1lbChwcm9wKX06ICR7dGhpcy5nZXRUeXBlT2ZQcm9wZXJ0eShwcm9wKX0ke29wdGlvbmFsTWFya2VyfTtgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIEF0dHJpYnV0ZSBcXGAke3RoaXMudHlwZU5hbWV9LiR7cHJvcH1cXGBgKTtcbiAgICAgIGlmICh0aGlzLnR5cGVEZWYuU291cmNlVXJsKSB7XG4gICAgICAgIGNvZGUubGluZShgICogQGxpbmsgJHt0aGlzLnR5cGVEZWYuU291cmNlVXJsfWApO1xuICAgICAgfVxuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5IGF0dHIke3Bhc2NhbChwcm9wKX06ICR7dGhpcy5nZXRUeXBlT2ZQcm9wZXJ0eShwcm9wKX07YCk7XG4gICAgfVxuXG4gICAgY29kZS5saW5lKCk7XG5cbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZShgICogQ3JlYXRlIGEgbmV3IFxcYCR7dGhpcy50eXBlTmFtZX1cXGAuYCk7XG4gICAgY29kZS5saW5lKCcgKicpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gaWQgICAgLSBzY29wZWQgaWQgb2YgdGhlIHJlc291cmNlJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzJyk7XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgY29uc3RydWN0b3Ioc2NvcGU6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMucHJvcHNTdHJ1Y3ROYW1lfSlgKTtcbiAgICBjb2RlLmxpbmUoYHN1cGVyKHNjb3BlLCBpZCwgeyB0eXBlOiAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfS5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLCBwcm9wZXJ0aWVzOiB0b0pzb25fJHt0aGlzLnByb3BzU3RydWN0TmFtZX0ocHJvcHMpISB9KTtgKTtcbiAgICBjb2RlLmxpbmUoJycpO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlUHJvcGVydGllcykge1xuICAgICAgY29kZS5saW5lKGB0aGlzLiR7Y2FtZWwocHJvcCl9ID0gcHJvcHMuJHtjYW1lbChwcm9wKX07YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gYGF0dHIke3Bhc2NhbChwcm9wKX1gO1xuICAgICAgY29kZS5saW5lKGB0aGlzLiR7cHJvcGVydHlOYW1lfSA9ICR7dGhpcy5yZW5kZXJHZXRBdHQocHJvcCl9O2ApO1xuICAgIH1cbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcblxuICAgIC8vIENsb3NlIGNvbnN0cnVjdCBjbGFzc1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJHZXRBdHQocHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVUeXBlID0gdGhpcy5nZXRUeXBlT2ZQcm9wZXJ0eShwcm9wKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckFyZ3VtZW50cyA9IGB0aGlzLmdldEF0dCgnJHtwcm9wfScpYDtcbiAgICBpZiAoYXR0cmlidXRlVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBgY2RrLlRva2VuLmFzU3RyaW5nKCR7Y29uc3RydWN0b3JBcmd1bWVudHN9KWA7XG4gICAgfVxuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09PSAnc3RyaW5nW10nKSB7XG4gICAgICByZXR1cm4gYGNkay5Ub2tlbi5hc0xpc3QoJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pYDtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gYGNkay5Ub2tlbi5hc051bWJlcigke2NvbnN0cnVjdG9yQXJndW1lbnRzfSlgO1xuICAgIH1cbiAgICByZXR1cm4gY29uc3RydWN0b3JBcmd1bWVudHM7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVPZlByb3BlcnR5KHByb3A6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldFR5cGVGcm9tU2NoZW1hKHRoaXMuc2NoZW1hLnByb3BlcnRpZXNbcHJvcF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlRnJvbVNjaGVtYShwcm9wOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChwcm9wLnR5cGUpIHtcbiAgICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0VHlwZUZyb21TY2hlbWEocHJvcC5pdGVtcyl9W11gO1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnYW55JztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3AuaGFzT3duUHJvcGVydHkoJyRyZWYnKSkge1xuICAgICAgcmV0dXJuIHByb3AuJHJlZi5yZXBsYWNlKC8jXFwvZGVmaW5pdGlvbnNcXC8vLCAnJyk7XG4gICAgfVxuICAgIHJldHVybiAnYW55JztcbiAgfVxuXG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -34,29 +34,29 @@
|
|
|
34
34
|
"eslint-import-resolver-node": "^0.3.6",
|
|
35
35
|
"eslint-import-resolver-typescript": "^2.5.0",
|
|
36
36
|
"eslint-plugin-import": "^2.24.2",
|
|
37
|
-
"jest": "^27.2.
|
|
37
|
+
"jest": "^27.2.5",
|
|
38
38
|
"jest-junit": "^12",
|
|
39
39
|
"json-schema": "^0.3.0",
|
|
40
40
|
"npm-check-updates": "^11",
|
|
41
|
-
"projen": "^0.29.
|
|
41
|
+
"projen": "^0.29.17",
|
|
42
42
|
"standard-version": "^9",
|
|
43
43
|
"ts-jest": "^27.0.5",
|
|
44
44
|
"ts-node": "^10.2.1",
|
|
45
45
|
"typescript": "^4.4.3"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@aws-cdk/core": "^1.
|
|
49
|
-
"aws-sdk": "^2.
|
|
48
|
+
"@aws-cdk/core": "^1.127.0",
|
|
49
|
+
"aws-sdk": "^2.1004.0",
|
|
50
50
|
"case": "^1.6.3",
|
|
51
|
-
"jsii-srcmak": "^0.1.
|
|
52
|
-
"json2jsii": "^0.2.
|
|
51
|
+
"jsii-srcmak": "^0.1.363",
|
|
52
|
+
"json2jsii": "^0.2.39",
|
|
53
53
|
"minimist": "^1.2.5",
|
|
54
54
|
"proxy-agent": "^5.0.0"
|
|
55
55
|
},
|
|
56
56
|
"bundledDependencies": [],
|
|
57
57
|
"main": "lib/index.js",
|
|
58
58
|
"license": "Apache-2.0",
|
|
59
|
-
"version": "0.1.
|
|
59
|
+
"version": "0.1.8",
|
|
60
60
|
"jest": {
|
|
61
61
|
"testMatch": [
|
|
62
62
|
"**/__tests__/**/*.ts?(x)",
|
package/playground/eks.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"Arn": "arn:aws:cloudformation:us-west-1::type/resource/408988dff9e863704bcc72e7e13f8d645cee8311/AWSQS-EKS-Cluster",
|
|
3
|
-
"Type": "RESOURCE",
|
|
4
|
-
"TypeName": "AWSQS::EKS::Cluster",
|
|
5
|
-
"Description": "A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters.",
|
|
6
|
-
"Schema": "{\n \"typeName\": \"AWSQS::EKS::Cluster\",\n \"description\": \"A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters.\",\n \"sourceUrl\": \"https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git\",\n \"documentationUrl\": \"https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider/blob/main/README.md\",\n \"definitions\": {\n \"KubernetesApiAccessEntry\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"Arn\": {\"type\": \"string\"},\n \"Username\": {\"type\": \"string\"},\n \"Groups\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n }\n },\n \"Provider\": {\n \"description\": \"AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"KeyArn\": {\n \"description\": \"Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK.\",\n \"type\": \"string\"\n }\n }\n },\n \"EncryptionConfigEntry\": {\n \"description\": \"The encryption configuration for the cluster.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"Resources\": {\n \"type\": \"array\",\n \"description\": \"Specifies the resources to be encrypted. The only supported value is \\\"secrets\\\".\",\n \"items\": {\n \"description\": \"Specifies the resources to be encrypted. The only supported value is \\\"secrets\\\".\",\n \"type\": \"string\"\n }\n },\n \"Provider\": {\n \"$ref\": \"#/definitions/Provider\"\n }\n }\n }\n },\n \"properties\": {\n \"Name\": {\n \"description\": \"A unique name for your cluster.\",\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"RoleArn\": {\n \"description\": \"Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs.\",\n \"type\": \"string\"\n },\n \"LambdaRoleName\": {\n \"description\": \"Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC\",\n \"type\": \"string\",\n \"default\": \"CloudFormation-Kubernetes-VPC\"\n },\n \"Version\": {\n \"description\": \"Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS.\",\n \"type\": \"string\",\n \"default\": \"1.19\"\n },\n \"KubernetesNetworkConfig\": {\n \"description\": \"Network configuration for Amazon EKS cluster.\\n\\n\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"ServiceIpv4Cidr\": {\n \"description\": \"Specify the range from which cluster services will receive IPv4 addresses.\",\n \"type\": \"string\"\n }\n }\n },\n \"ResourcesVpcConfig\": {\n \"description\": \"An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster.\",\n \"type\": \"object\",\n \"properties\": {\n \"SecurityGroupIds\": {\n \"description\": \"Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.\",\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"}\n },\n \"SubnetIds\": {\n \"description\": \"Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane.\",\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"}\n },\n \"EndpointPublicAccess\": {\n \"description\": \"Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server.\",\n \"type\": \"boolean\"\n },\n \"EndpointPrivateAccess\": {\n \"description\": \"Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods.\",\n \"type\": \"boolean\"\n },\n \"PublicAccessCidrs\": {\n \"description\": \"The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.\",\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"}\n }\n },\n \"required\": [\"SubnetIds\"],\n \"additionalProperties\": false\n },\n \"EnabledClusterLoggingTypes\": {\n \"description\": \"Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler.\",\n \"type\": \"array\",\n \"items\": {\"type\": \"string\", \"pattern\": \"^api$|^audit$|^authenticator$|^controllerManager$|^scheduler$\"}\n },\n \"EncryptionConfig\": {\n \"description\": \"Encryption configuration for the cluster.\",\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/EncryptionConfigEntry\"\n }\n },\n \"KubernetesApiAccess\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"Roles\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/KubernetesApiAccessEntry\"\n }\n },\n \"Users\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/KubernetesApiAccessEntry\"\n }\n }\n }\n },\n \"Arn\": {\n \"description\": \"ARN of the cluster (e.g., `arn:aws:eks:us-west-2:666666666666:cluster/prod`).\",\n \"type\": \"string\"\n },\n \"CertificateAuthorityData\": {\n \"description\": \"Certificate authority data for your cluster.\",\n \"type\": \"string\"\n },\n \"ClusterSecurityGroupId\": {\n \"description\": \"Security group that was created by Amazon EKS for your cluster. Managed-node groups use this security group for control-plane-to-data-plane communications.\",\n \"type\": \"string\"\n },\n \"Endpoint\": {\n \"description\": \"Endpoint for your Kubernetes API server (e.g., https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com).\",\n \"type\": \"string\"\n },\n \"EncryptionConfigKeyArn\": {\n \"description\": \"ARN or alias of the customer master key (CMK).\",\n \"type\": \"string\"\n },\n \"OIDCIssuerURL\": {\n \"description\": \"Issuer URL for the OpenID Connect identity provider.\",\n \"type\": \"string\"\n },\n \"Tags\": {\n \"type\": \"array\",\n \"uniqueItems\": false,\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"Value\": {\n \"type\": \"string\"\n },\n \"Key\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"Value\",\n \"Key\"\n ]\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\n \"RoleArn\",\n \"ResourcesVpcConfig\"\n ],\n \"readOnlyProperties\": [\n \"/properties/Arn\",\n \"/properties/Endpoint\",\n \"/properties/ClusterSecurityGroupId\",\n \"/properties/CertificateAuthorityData\",\n \"/properties/EncryptionConfigKeyArn\",\n \"/properties/OIDCIssuerURL\"\n ],\n \"createOnlyProperties\": [\n \"/properties/Name\",\n \"/properties/KubernetesNetworkConfig/ServiceIpv4Cidr\",\n \"/properties/RoleArn\",\n \"/properties/ResourcesVpcConfig/SubnetIds\",\n \"/properties/ResourcesVpcConfig/SecurityGroupIds\"\n ],\n \"primaryIdentifier\": [\n \"/properties/Name\"\n ],\n \"handlers\": {\n \"create\": {\n \"permissions\": [\n \"sts:GetCallerIdentity\",\n \"eks:CreateCluster\",\n \"eks:DescribeCluster\",\n \"eks:ListTagsForResource\",\n \"eks:TagResource\",\n \"iam:PassRole\",\n \"sts:AssumeRole\",\n \"lambda:UpdateFunctionConfiguration\",\n \"lambda:DeleteFunction\",\n \"lambda:GetFunction\",\n \"lambda:InvokeFunction\",\n \"lambda:CreateFunction\",\n \"lambda:UpdateFunctionCode\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"iam:PassRole\",\n \"cloudformation:ListExports\",\n \"kms:DescribeKey\",\n \"kms:CreateGrant\"\n ]\n },\n \"read\": {\n \"permissions\": [\n \"sts:GetCallerIdentity\",\n \"eks:DescribeCluster\",\n \"eks:ListTagsForResource\",\n \"lambda:UpdateFunctionConfiguration\",\n \"lambda:DeleteFunction\",\n \"lambda:GetFunction\",\n \"lambda:InvokeFunction\",\n \"lambda:CreateFunction\",\n \"lambda:UpdateFunctionCode\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"iam:PassRole\",\n \"cloudformation:ListExports\",\n \"kms:DescribeKey\",\n \"kms:CreateGrant\"\n ]\n },\n \"update\": {\n \"permissions\": [\n \"sts:GetCallerIdentity\",\n \"eks:DescribeCluster\",\n \"eks:UpdateClusterVersion\",\n \"eks:UpdateClusterConfig\",\n \"eks:ListTagsForResource\",\n \"eks:TagResource\",\n \"eks:UntagResource\",\n \"iam:PassRole\",\n \"lambda:UpdateFunctionConfiguration\",\n \"lambda:DeleteFunction\",\n \"lambda:GetFunction\",\n \"lambda:InvokeFunction\",\n \"lambda:CreateFunction\",\n \"lambda:UpdateFunctionCode\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"cloudformation:ListExports\",\n \"kms:DescribeKey\",\n \"kms:CreateGrant\"\n ]\n },\n \"delete\": {\n \"permissions\": [\n \"sts:GetCallerIdentity\",\n \"eks:DescribeCluster\",\n \"eks:ListTagsForResource\",\n \"eks:DeleteCluster\",\n \"lambda:UpdateFunctionConfiguration\",\n \"lambda:DeleteFunction\",\n \"lambda:GetFunction\",\n \"lambda:InvokeFunction\",\n \"lambda:CreateFunction\",\n \"lambda:UpdateFunctionCode\",\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"iam:PassRole\",\n \"cloudformation:ListExports\",\n \"kms:DescribeKey\",\n \"kms:CreateGrant\"\n ]\n }\n }\n}\n",
|
|
7
|
-
"ProvisioningType": "FULLY_MUTABLE",
|
|
8
|
-
"DeprecatedStatus": "LIVE",
|
|
9
|
-
"Visibility": "PUBLIC",
|
|
10
|
-
"SourceUrl": "https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git",
|
|
11
|
-
"DocumentationUrl": "https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider/blob/main/README.md",
|
|
12
|
-
"TimeCreated": "2021-06-21T23:57:50.259000+00:00"
|
|
13
|
-
}
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"typeName": "AWSQS::EKS::Cluster",
|
|
3
|
-
"description": "A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters.",
|
|
4
|
-
"sourceUrl": "https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git",
|
|
5
|
-
"documentationUrl": "https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider/blob/main/README.md",
|
|
6
|
-
"definitions": {
|
|
7
|
-
"KubernetesApiAccessEntry": {
|
|
8
|
-
"type": "object",
|
|
9
|
-
"additionalProperties": false,
|
|
10
|
-
"properties": {
|
|
11
|
-
"Arn": {"type": "string"},
|
|
12
|
-
"Username": {"type": "string"},
|
|
13
|
-
"Groups": {"type": "array", "items": {"type": "string"}}
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"Provider": {
|
|
17
|
-
"description": "AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used.",
|
|
18
|
-
"type": "object",
|
|
19
|
-
"additionalProperties": false,
|
|
20
|
-
"properties": {
|
|
21
|
-
"KeyArn": {
|
|
22
|
-
"description": "Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK.",
|
|
23
|
-
"type": "string"
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
"EncryptionConfigEntry": {
|
|
28
|
-
"description": "The encryption configuration for the cluster.",
|
|
29
|
-
"type": "object",
|
|
30
|
-
"additionalProperties": false,
|
|
31
|
-
"properties": {
|
|
32
|
-
"Resources": {
|
|
33
|
-
"type": "array",
|
|
34
|
-
"description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".",
|
|
35
|
-
"items": {
|
|
36
|
-
"description": "Specifies the resources to be encrypted. The only supported value is \"secrets\".",
|
|
37
|
-
"type": "string"
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"Provider": {
|
|
41
|
-
"$ref": "#/definitions/Provider"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
"properties": {
|
|
47
|
-
"Name": {
|
|
48
|
-
"description": "A unique name for your cluster.",
|
|
49
|
-
"type": "string",
|
|
50
|
-
"minLength": 1
|
|
51
|
-
},
|
|
52
|
-
"RoleArn": {
|
|
53
|
-
"description": "Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs.",
|
|
54
|
-
"type": "string"
|
|
55
|
-
},
|
|
56
|
-
"LambdaRoleName": {
|
|
57
|
-
"description": "Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC",
|
|
58
|
-
"type": "string",
|
|
59
|
-
"default": "CloudFormation-Kubernetes-VPC"
|
|
60
|
-
},
|
|
61
|
-
"Version": {
|
|
62
|
-
"description": "Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS.",
|
|
63
|
-
"type": "string",
|
|
64
|
-
"default": "1.19"
|
|
65
|
-
},
|
|
66
|
-
"KubernetesNetworkConfig": {
|
|
67
|
-
"description": "Network configuration for Amazon EKS cluster.\n\n",
|
|
68
|
-
"type": "object",
|
|
69
|
-
"additionalProperties": false,
|
|
70
|
-
"properties": {
|
|
71
|
-
"ServiceIpv4Cidr": {
|
|
72
|
-
"description": "Specify the range from which cluster services will receive IPv4 addresses.",
|
|
73
|
-
"type": "string"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
"ResourcesVpcConfig": {
|
|
78
|
-
"description": "An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster.",
|
|
79
|
-
"type": "object",
|
|
80
|
-
"properties": {
|
|
81
|
-
"SecurityGroupIds": {
|
|
82
|
-
"description": "Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.",
|
|
83
|
-
"type": "array",
|
|
84
|
-
"items": {"type": "string"}
|
|
85
|
-
},
|
|
86
|
-
"SubnetIds": {
|
|
87
|
-
"description": "Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane.",
|
|
88
|
-
"type": "array",
|
|
89
|
-
"items": {"type": "string"}
|
|
90
|
-
},
|
|
91
|
-
"EndpointPublicAccess": {
|
|
92
|
-
"description": "Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server.",
|
|
93
|
-
"type": "boolean"
|
|
94
|
-
},
|
|
95
|
-
"EndpointPrivateAccess": {
|
|
96
|
-
"description": "Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods.",
|
|
97
|
-
"type": "boolean"
|
|
98
|
-
},
|
|
99
|
-
"PublicAccessCidrs": {
|
|
100
|
-
"description": "The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.",
|
|
101
|
-
"type": "array",
|
|
102
|
-
"items": {"type": "string"}
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
"required": ["SubnetIds"],
|
|
106
|
-
"additionalProperties": false
|
|
107
|
-
},
|
|
108
|
-
"EnabledClusterLoggingTypes": {
|
|
109
|
-
"description": "Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler.",
|
|
110
|
-
"type": "array",
|
|
111
|
-
"items": {"type": "string", "pattern": "^api$|^audit$|^authenticator$|^controllerManager$|^scheduler$"}
|
|
112
|
-
},
|
|
113
|
-
"EncryptionConfig": {
|
|
114
|
-
"description": "Encryption configuration for the cluster.",
|
|
115
|
-
"type": "array",
|
|
116
|
-
"items": {
|
|
117
|
-
"$ref": "#/definitions/EncryptionConfigEntry"
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
"KubernetesApiAccess": {
|
|
121
|
-
"type": "object",
|
|
122
|
-
"additionalProperties": false,
|
|
123
|
-
"properties": {
|
|
124
|
-
"Roles": {
|
|
125
|
-
"type": "array",
|
|
126
|
-
"items": {
|
|
127
|
-
"$ref": "#/definitions/KubernetesApiAccessEntry"
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
"Users": {
|
|
131
|
-
"type": "array",
|
|
132
|
-
"items": {
|
|
133
|
-
"$ref": "#/definitions/KubernetesApiAccessEntry"
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
"Arn": {
|
|
139
|
-
"description": "ARN of the cluster (e.g., `arn:aws:eks:us-west-2:666666666666:cluster/prod`).",
|
|
140
|
-
"type": "string"
|
|
141
|
-
},
|
|
142
|
-
"CertificateAuthorityData": {
|
|
143
|
-
"description": "Certificate authority data for your cluster.",
|
|
144
|
-
"type": "string"
|
|
145
|
-
},
|
|
146
|
-
"ClusterSecurityGroupId": {
|
|
147
|
-
"description": "Security group that was created by Amazon EKS for your cluster. Managed-node groups use this security group for control-plane-to-data-plane communications.",
|
|
148
|
-
"type": "string"
|
|
149
|
-
},
|
|
150
|
-
"Endpoint": {
|
|
151
|
-
"description": "Endpoint for your Kubernetes API server (e.g., https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com).",
|
|
152
|
-
"type": "string"
|
|
153
|
-
},
|
|
154
|
-
"EncryptionConfigKeyArn": {
|
|
155
|
-
"description": "ARN or alias of the customer master key (CMK).",
|
|
156
|
-
"type": "string"
|
|
157
|
-
},
|
|
158
|
-
"OIDCIssuerURL": {
|
|
159
|
-
"description": "Issuer URL for the OpenID Connect identity provider.",
|
|
160
|
-
"type": "string"
|
|
161
|
-
},
|
|
162
|
-
"Tags": {
|
|
163
|
-
"type": "array",
|
|
164
|
-
"uniqueItems": false,
|
|
165
|
-
"items": {
|
|
166
|
-
"type": "object",
|
|
167
|
-
"additionalProperties": false,
|
|
168
|
-
"properties": {
|
|
169
|
-
"Value": {
|
|
170
|
-
"type": "string"
|
|
171
|
-
},
|
|
172
|
-
"Key": {
|
|
173
|
-
"type": "string"
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
"required": [
|
|
177
|
-
"Value",
|
|
178
|
-
"Key"
|
|
179
|
-
]
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
"additionalProperties": false,
|
|
184
|
-
"required": [
|
|
185
|
-
"RoleArn",
|
|
186
|
-
"ResourcesVpcConfig"
|
|
187
|
-
],
|
|
188
|
-
"readOnlyProperties": [
|
|
189
|
-
"/properties/Arn",
|
|
190
|
-
"/properties/Endpoint",
|
|
191
|
-
"/properties/ClusterSecurityGroupId",
|
|
192
|
-
"/properties/CertificateAuthorityData",
|
|
193
|
-
"/properties/EncryptionConfigKeyArn",
|
|
194
|
-
"/properties/OIDCIssuerURL"
|
|
195
|
-
],
|
|
196
|
-
"createOnlyProperties": [
|
|
197
|
-
"/properties/Name",
|
|
198
|
-
"/properties/KubernetesNetworkConfig/ServiceIpv4Cidr",
|
|
199
|
-
"/properties/RoleArn",
|
|
200
|
-
"/properties/ResourcesVpcConfig/SubnetIds",
|
|
201
|
-
"/properties/ResourcesVpcConfig/SecurityGroupIds"
|
|
202
|
-
],
|
|
203
|
-
"primaryIdentifier": [
|
|
204
|
-
"/properties/Name"
|
|
205
|
-
],
|
|
206
|
-
"handlers": {
|
|
207
|
-
"create": {
|
|
208
|
-
"permissions": [
|
|
209
|
-
"sts:GetCallerIdentity",
|
|
210
|
-
"eks:CreateCluster",
|
|
211
|
-
"eks:DescribeCluster",
|
|
212
|
-
"eks:ListTagsForResource",
|
|
213
|
-
"eks:TagResource",
|
|
214
|
-
"iam:PassRole",
|
|
215
|
-
"sts:AssumeRole",
|
|
216
|
-
"lambda:UpdateFunctionConfiguration",
|
|
217
|
-
"lambda:DeleteFunction",
|
|
218
|
-
"lambda:GetFunction",
|
|
219
|
-
"lambda:InvokeFunction",
|
|
220
|
-
"lambda:CreateFunction",
|
|
221
|
-
"lambda:UpdateFunctionCode",
|
|
222
|
-
"ec2:DescribeVpcs",
|
|
223
|
-
"ec2:DescribeSubnets",
|
|
224
|
-
"ec2:DescribeSecurityGroups",
|
|
225
|
-
"iam:PassRole",
|
|
226
|
-
"cloudformation:ListExports",
|
|
227
|
-
"kms:DescribeKey",
|
|
228
|
-
"kms:CreateGrant"
|
|
229
|
-
]
|
|
230
|
-
},
|
|
231
|
-
"read": {
|
|
232
|
-
"permissions": [
|
|
233
|
-
"sts:GetCallerIdentity",
|
|
234
|
-
"eks:DescribeCluster",
|
|
235
|
-
"eks:ListTagsForResource",
|
|
236
|
-
"lambda:UpdateFunctionConfiguration",
|
|
237
|
-
"lambda:DeleteFunction",
|
|
238
|
-
"lambda:GetFunction",
|
|
239
|
-
"lambda:InvokeFunction",
|
|
240
|
-
"lambda:CreateFunction",
|
|
241
|
-
"lambda:UpdateFunctionCode",
|
|
242
|
-
"ec2:DescribeVpcs",
|
|
243
|
-
"ec2:DescribeSubnets",
|
|
244
|
-
"ec2:DescribeSecurityGroups",
|
|
245
|
-
"iam:PassRole",
|
|
246
|
-
"cloudformation:ListExports",
|
|
247
|
-
"kms:DescribeKey",
|
|
248
|
-
"kms:CreateGrant"
|
|
249
|
-
]
|
|
250
|
-
},
|
|
251
|
-
"update": {
|
|
252
|
-
"permissions": [
|
|
253
|
-
"sts:GetCallerIdentity",
|
|
254
|
-
"eks:DescribeCluster",
|
|
255
|
-
"eks:UpdateClusterVersion",
|
|
256
|
-
"eks:UpdateClusterConfig",
|
|
257
|
-
"eks:ListTagsForResource",
|
|
258
|
-
"eks:TagResource",
|
|
259
|
-
"eks:UntagResource",
|
|
260
|
-
"iam:PassRole",
|
|
261
|
-
"lambda:UpdateFunctionConfiguration",
|
|
262
|
-
"lambda:DeleteFunction",
|
|
263
|
-
"lambda:GetFunction",
|
|
264
|
-
"lambda:InvokeFunction",
|
|
265
|
-
"lambda:CreateFunction",
|
|
266
|
-
"lambda:UpdateFunctionCode",
|
|
267
|
-
"ec2:DescribeVpcs",
|
|
268
|
-
"ec2:DescribeSubnets",
|
|
269
|
-
"ec2:DescribeSecurityGroups",
|
|
270
|
-
"cloudformation:ListExports",
|
|
271
|
-
"kms:DescribeKey",
|
|
272
|
-
"kms:CreateGrant"
|
|
273
|
-
]
|
|
274
|
-
},
|
|
275
|
-
"delete": {
|
|
276
|
-
"permissions": [
|
|
277
|
-
"sts:GetCallerIdentity",
|
|
278
|
-
"eks:DescribeCluster",
|
|
279
|
-
"eks:ListTagsForResource",
|
|
280
|
-
"eks:DeleteCluster",
|
|
281
|
-
"lambda:UpdateFunctionConfiguration",
|
|
282
|
-
"lambda:DeleteFunction",
|
|
283
|
-
"lambda:GetFunction",
|
|
284
|
-
"lambda:InvokeFunction",
|
|
285
|
-
"lambda:CreateFunction",
|
|
286
|
-
"lambda:UpdateFunctionCode",
|
|
287
|
-
"ec2:DescribeVpcs",
|
|
288
|
-
"ec2:DescribeSubnets",
|
|
289
|
-
"ec2:DescribeSecurityGroups",
|
|
290
|
-
"iam:PassRole",
|
|
291
|
-
"cloudformation:ListExports",
|
|
292
|
-
"kms:DescribeKey",
|
|
293
|
-
"kms:CreateGrant"
|
|
294
|
-
]
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
package/playground/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const json2jsii = require('json2jsii');
|
|
2
|
-
const schema = require('./eks.schema.json');
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
|
|
5
|
-
const gen = new json2jsii.TypeGenerator({
|
|
6
|
-
definitions: schema.definitions
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
gen.emitType('ClusterProps', schema);
|
|
10
|
-
|
|
11
|
-
// generate ClusterProps from the CFN registry schema
|
|
12
|
-
fs.writeFileSync('out.ts', gen.render());
|