@aws-cdk/aws-elasticache-alpha 2.218.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +8808 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +217 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +421 -0
- package/lib/common.d.ts +13 -0
- package/lib/common.js +18 -0
- package/lib/iam-user.d.ts +79 -0
- package/lib/iam-user.js +106 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +25 -0
- package/lib/no-password-user.d.ts +64 -0
- package/lib/no-password-user.js +78 -0
- package/lib/password-user.d.ts +70 -0
- package/lib/password-user.js +79 -0
- package/lib/serverless-cache-base.d.ts +247 -0
- package/lib/serverless-cache-base.js +183 -0
- package/lib/serverless-cache.d.ts +341 -0
- package/lib/serverless-cache.js +429 -0
- package/lib/user-base.d.ts +148 -0
- package/lib/user-base.js +114 -0
- package/lib/user-group.d.ts +199 -0
- package/lib/user-group.js +239 -0
- package/package.json +117 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +16 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var _a, _b;
|
|
9
|
+
var UserGroup_1;
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.UserGroup = exports.UserGroupBase = void 0;
|
|
12
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
13
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
14
|
+
const common_1 = require("./common");
|
|
15
|
+
const aws_elasticache_1 = require("aws-cdk-lib/aws-elasticache");
|
|
16
|
+
const core_1 = require("aws-cdk-lib/core");
|
|
17
|
+
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
18
|
+
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
19
|
+
const ELASTICACHE_USERGROUP_SYMBOL = Symbol.for('@aws-cdk/aws-elasticache.UserGroup');
|
|
20
|
+
/**
|
|
21
|
+
* Base class for UserGroup constructs
|
|
22
|
+
*/
|
|
23
|
+
class UserGroupBase extends core_1.Resource {
|
|
24
|
+
/**
|
|
25
|
+
* Add a user to this user group
|
|
26
|
+
*
|
|
27
|
+
* @param _user The user to add
|
|
28
|
+
*/
|
|
29
|
+
addUser(_user) {
|
|
30
|
+
try {
|
|
31
|
+
jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_IUser(_user);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
35
|
+
Error.captureStackTrace(error, this.addUser);
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
throw new core_1.UnscopedValidationError('Cannot add users to an imported UserGroup. Only UserGroups created in this stack can be modified.');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.UserGroupBase = UserGroupBase;
|
|
43
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
44
|
+
UserGroupBase[_a] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.218.0-alpha.0" };
|
|
45
|
+
/**
|
|
46
|
+
* An ElastiCache UserGroup
|
|
47
|
+
*
|
|
48
|
+
* @resource AWS::ElastiCache::UserGroup
|
|
49
|
+
*/
|
|
50
|
+
let UserGroup = UserGroup_1 = class UserGroup extends UserGroupBase {
|
|
51
|
+
/**
|
|
52
|
+
* Return whether the given object is a `UserGroup`
|
|
53
|
+
*/
|
|
54
|
+
static isUserGroup(x) {
|
|
55
|
+
return x !== null && typeof (x) === 'object' && ELASTICACHE_USERGROUP_SYMBOL in x;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Import an existing user group by name
|
|
59
|
+
*
|
|
60
|
+
* @param scope The parent creating construct (usually `this`)
|
|
61
|
+
* @param id The construct's name
|
|
62
|
+
* @param userGroupName The name of the existing user group
|
|
63
|
+
*/
|
|
64
|
+
static fromUserGroupName(scope, id, userGroupName) {
|
|
65
|
+
return UserGroup_1.fromUserGroupAttributes(scope, id, { userGroupName });
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Import an existing user group by ARN
|
|
69
|
+
*
|
|
70
|
+
* @param scope The parent creating construct (usually `this`)
|
|
71
|
+
* @param id The construct's name
|
|
72
|
+
* @param userGroupArn The ARN of the existing user group
|
|
73
|
+
*/
|
|
74
|
+
static fromUserGroupArn(scope, id, userGroupArn) {
|
|
75
|
+
return UserGroup_1.fromUserGroupAttributes(scope, id, { userGroupArn });
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Import an existing user group using attributes
|
|
79
|
+
*
|
|
80
|
+
* @param scope The parent creating construct (usually `this`)
|
|
81
|
+
* @param id The construct's name
|
|
82
|
+
* @param attrs A `UserGroupAttributes` object
|
|
83
|
+
*/
|
|
84
|
+
static fromUserGroupAttributes(scope, id, attrs) {
|
|
85
|
+
try {
|
|
86
|
+
jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_UserGroupAttributes(attrs);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
90
|
+
Error.captureStackTrace(error, this.fromUserGroupAttributes);
|
|
91
|
+
}
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
let userGroupName;
|
|
95
|
+
let userGroupArn;
|
|
96
|
+
const stack = core_1.Stack.of(scope);
|
|
97
|
+
if (attrs.userGroupArn && attrs.userGroupName) {
|
|
98
|
+
throw new core_1.ValidationError('Only one of userGroupArn or userGroupName can be provided.', scope);
|
|
99
|
+
}
|
|
100
|
+
if (attrs.userGroupArn) {
|
|
101
|
+
userGroupArn = attrs.userGroupArn;
|
|
102
|
+
const extractedUserGroupName = stack.splitArn(attrs.userGroupArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
103
|
+
if (!extractedUserGroupName) {
|
|
104
|
+
throw new core_1.ValidationError('Unable to extract user group name from ARN.', scope);
|
|
105
|
+
}
|
|
106
|
+
userGroupName = extractedUserGroupName;
|
|
107
|
+
}
|
|
108
|
+
else if (attrs.userGroupName) {
|
|
109
|
+
userGroupName = attrs.userGroupName;
|
|
110
|
+
userGroupArn = stack.formatArn({
|
|
111
|
+
service: 'elasticache',
|
|
112
|
+
resource: 'usergroup',
|
|
113
|
+
resourceName: attrs.userGroupName,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
throw new core_1.ValidationError('One of userGroupName or userGroupArn is required.', scope);
|
|
118
|
+
}
|
|
119
|
+
class Import extends UserGroupBase {
|
|
120
|
+
get users() {
|
|
121
|
+
return attrs.users ? [...attrs.users] : undefined;
|
|
122
|
+
}
|
|
123
|
+
constructor(_userGroupArn, _userGroupName) {
|
|
124
|
+
super(scope, id);
|
|
125
|
+
this.userGroupArn = _userGroupArn;
|
|
126
|
+
this.userGroupName = _userGroupName;
|
|
127
|
+
this.engine = attrs.engine;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return new Import(userGroupArn, userGroupName);
|
|
131
|
+
}
|
|
132
|
+
constructor(scope, id, props = {}) {
|
|
133
|
+
super(scope, id, {});
|
|
134
|
+
this._users = [];
|
|
135
|
+
try {
|
|
136
|
+
jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_UserGroupProps(props);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
140
|
+
Error.captureStackTrace(error, UserGroup);
|
|
141
|
+
}
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
// Enhanced CDK Analytics Telemetry
|
|
145
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
146
|
+
this.engine = props.engine ?? common_1.UserEngine.VALKEY;
|
|
147
|
+
this.userGroupName = props.userGroupName ?? core_1.Lazy.string({
|
|
148
|
+
// Elasticache not allowing uppercase user group id
|
|
149
|
+
produce: () => core_1.Names.uniqueId(this).toLocaleLowerCase(),
|
|
150
|
+
});
|
|
151
|
+
if (props.users) {
|
|
152
|
+
this._users.push(...props.users);
|
|
153
|
+
}
|
|
154
|
+
this.resource = new aws_elasticache_1.CfnUserGroup(this, 'Resource', {
|
|
155
|
+
engine: this.engine,
|
|
156
|
+
userGroupId: this.userGroupName,
|
|
157
|
+
userIds: core_1.Lazy.list({
|
|
158
|
+
produce: () => {
|
|
159
|
+
this.validateUsers();
|
|
160
|
+
return this._users.map(user => user.userId);
|
|
161
|
+
},
|
|
162
|
+
}),
|
|
163
|
+
});
|
|
164
|
+
if (props.users) {
|
|
165
|
+
props.users.forEach(user => this.addUserDependency(user));
|
|
166
|
+
}
|
|
167
|
+
this.userGroupArn = this.resource.attrArn;
|
|
168
|
+
this.userGroupStatus = this.resource.attrStatus;
|
|
169
|
+
Object.defineProperty(this, ELASTICACHE_USERGROUP_SYMBOL, { value: true });
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Add a CloudFormation dependency on the user resource to ensure proper creation order.
|
|
173
|
+
*/
|
|
174
|
+
addUserDependency(user) {
|
|
175
|
+
this.resource.node.addDependency(user);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Array of users in the user group
|
|
179
|
+
*
|
|
180
|
+
* Do not push directly to this array.
|
|
181
|
+
* Use addUser() instead to ensure proper validation and dependency management.
|
|
182
|
+
*/
|
|
183
|
+
get users() {
|
|
184
|
+
return this._users;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Validates users in the user group for duplicate usernames and Redis-specific requirements.
|
|
188
|
+
*/
|
|
189
|
+
validateUsers() {
|
|
190
|
+
const userNames = this._users.map(user => user.userName);
|
|
191
|
+
const duplicates = userNames.filter((name, index) => userNames.indexOf(name) !== index);
|
|
192
|
+
if (duplicates.length > 0) {
|
|
193
|
+
throw new core_1.ValidationError('User group cannot have users with the same user name.', this);
|
|
194
|
+
}
|
|
195
|
+
if (this.engine === common_1.UserEngine.REDIS) {
|
|
196
|
+
this._users.forEach(user => {
|
|
197
|
+
if (user.engine !== common_1.UserEngine.REDIS) {
|
|
198
|
+
throw new core_1.ValidationError('Redis user group can only contain Redis users.', this);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
const hasDefaultUser = this._users.some(user => user.userName === 'default');
|
|
202
|
+
if (!hasDefaultUser) {
|
|
203
|
+
throw new core_1.ValidationError('Redis user groups need to contain a user with the user name "default".', this);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Add a user to this user group
|
|
209
|
+
*
|
|
210
|
+
* @param user The user to add to the group
|
|
211
|
+
*/
|
|
212
|
+
addUser(user) {
|
|
213
|
+
try {
|
|
214
|
+
jsiiDeprecationWarnings._aws_cdk_aws_elasticache_alpha_IUser(user);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
218
|
+
Error.captureStackTrace(error, this.addUser);
|
|
219
|
+
}
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
222
|
+
this._users.push(user);
|
|
223
|
+
this.addUserDependency(user);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
exports.UserGroup = UserGroup;
|
|
227
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
228
|
+
UserGroup[_b] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.218.0-alpha.0" };
|
|
229
|
+
/**
|
|
230
|
+
* Uniquely identifies this class
|
|
231
|
+
*/
|
|
232
|
+
UserGroup.PROPERTY_INJECTION_ID = 'aws-cdk-lib.aws-elasticache.UserGroup';
|
|
233
|
+
__decorate([
|
|
234
|
+
(0, metadata_resource_1.MethodMetadata)()
|
|
235
|
+
], UserGroup.prototype, "addUser", null);
|
|
236
|
+
exports.UserGroup = UserGroup = UserGroup_1 = __decorate([
|
|
237
|
+
prop_injectable_1.propertyInjectable
|
|
238
|
+
], UserGroup);
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLHFDQUFzQztBQUN0QyxpRUFBMkQ7QUFFM0QsMkNBQWdJO0FBQ2hJLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFFMUUsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUEwRHRGOztHQUVHO0FBQ0gsTUFBc0IsYUFBYyxTQUFRLGVBQVE7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsbUdBQW1HLENBQUMsQ0FBQztLQUN4STs7QUEzQkgsc0NBNEJDOzs7QUFvQ0Q7Ozs7R0FJRztBQUVJLElBQU0sU0FBUyxpQkFBZixNQUFNLFNBQVUsU0FBUSxhQUFhO0lBTTFDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztLQUNuRjtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtRQUNqRixPQUFPLFdBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztLQUN4RTtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtRQUMvRSxPQUFPLFdBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztLQUN2RTtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjs7Ozs7Ozs7OztRQUM1RixJQUFJLGFBQXFCLENBQUM7UUFDMUIsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QyxNQUFNLElBQUksc0JBQWUsQ0FBQyw0REFBNEQsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDbEMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUM5RyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLHNCQUFlLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEYsQ0FBQztZQUNELGFBQWEsR0FBRyxzQkFBc0IsQ0FBQztRQUN6QyxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0IsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDcEMsWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixRQUFRLEVBQUUsV0FBVztnQkFDckIsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLHNCQUFlLENBQUMsbURBQW1ELEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUVELE1BQU0sTUFBTyxTQUFRLGFBQWE7WUFLaEMsSUFBVyxLQUFLO2dCQUNkLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BELENBQUM7WUFFRCxZQUFZLGFBQXFCLEVBQUUsY0FBc0I7Z0JBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzdCLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ2hEO0lBcUJELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRTtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQWxCTixXQUFNLEdBQVksRUFBRSxDQUFDOzs7Ozs7K0NBM0YzQixTQUFTOzs7O1FBK0dsQixtQ0FBbUM7UUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLG1CQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxXQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RELG1EQUFtRDtZQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRTtTQUN4RCxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQy9CLE9BQU8sRUFBRSxXQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUMsQ0FBQzthQUNGLENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFFaEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUM1RTtJQUVEOztPQUVHO0lBQ0ssaUJBQWlCLENBQUMsSUFBVztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDeEM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN4RixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLHNCQUFlLENBQUMsdURBQXVELEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxtQkFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssbUJBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxJQUFJLHNCQUFlLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHdFQUF3RSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVHLENBQUM7UUFDSCxDQUFDO0tBQ0Y7SUFFRDs7OztPQUlHO0lBRUksT0FBTyxDQUFDLElBQVc7Ozs7Ozs7Ozs7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQWxNVSw4QkFBUzs7O0FBQ3BCOztHQUVHO0FBQ29CLCtCQUFxQixHQUFXLHVDQUF1QyxBQUFsRCxDQUFtRDtBQTJMeEY7SUFETixJQUFBLGtDQUFjLEdBQUU7d0NBSWhCO29CQWxNVSxTQUFTO0lBRHJCLG9DQUFrQjtHQUNOLFNBQVMsQ0FtTXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgQ2ZuVXNlckdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNhY2hlJztcbmltcG9ydCB7IElVc2VyIH0gZnJvbSAnLi91c2VyLWJhc2UnO1xuaW1wb3J0IHsgSVJlc291cmNlLCBSZXNvdXJjZSwgQXJuRm9ybWF0LCBTdGFjaywgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbmNvbnN0IEVMQVNUSUNBQ0hFX1VTRVJHUk9VUF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwUHJvcHMge1xuICAvKipcbiAgICogRW5mb3JjZXMgYSBwYXJ0aWN1bGFyIHBoeXNpY2FsIHVzZXIgZ3JvdXAgbmFtZS5cbiAgICogQGRlZmF1bHQgPGdlbmVyYXRlZD5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVNcbiAgICpcbiAgICogQGRlZmF1bHQgVXNlckVuZ2luZS5WQUxLRVlcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluc2lkZSB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHVzZXJzXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlckdyb3VwIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybjogc3RyaW5nO1xuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBVc2VyR3JvdXAgY29uc3RydWN0c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXNlckdyb3VwQmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVVzZXJHcm91cCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gX3VzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkVXNlcihfdXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdCBhZGQgdXNlcnMgdG8gYW4gaW1wb3J0ZWQgVXNlckdyb3VwLiBPbmx5IFVzZXJHcm91cHMgY3JlYXRlZCBpbiB0aGlzIHN0YWNrIGNhbiBiZSBtb2RpZmllZC4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaW1wb3J0aW5nIGEgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBBcm5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5naW5lIHR5cGUgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VycyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBOYW1lXG4gICAqL1xuICByZWFkb25seSB1c2VyR3JvdXBBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlVzZXJHcm91cFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVXNlckdyb3VwIGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLlVzZXJHcm91cCc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgVXNlckdyb3VwYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1VzZXJHcm91cCh4OiBhbnkpOiB4IGlzIFVzZXJHcm91cCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mICh4KSA9PT0gJ29iamVjdCcgJiYgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBOYW1lIFRoZSBuYW1lIG9mIHRoZSBleGlzdGluZyB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cE5hbWU6IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cE5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgQVJOXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gdXNlckdyb3VwQXJuIFRoZSBBUk4gb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB1c2VyR3JvdXBBcm46IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCB1c2luZyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVXNlckdyb3VwQXR0cmlidXRlc2Agb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBVc2VyR3JvdXBBdHRyaWJ1dGVzKTogSVVzZXJHcm91cCB7XG4gICAgbGV0IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgICBsZXQgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICBpZiAoYXR0cnMudXNlckdyb3VwQXJuICYmIGF0dHJzLnVzZXJHcm91cE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09ubHkgb25lIG9mIHVzZXJHcm91cEFybiBvciB1c2VyR3JvdXBOYW1lIGNhbiBiZSBwcm92aWRlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJzLnVzZXJHcm91cEFybikge1xuICAgICAgdXNlckdyb3VwQXJuID0gYXR0cnMudXNlckdyb3VwQXJuO1xuICAgICAgY29uc3QgZXh0cmFjdGVkVXNlckdyb3VwTmFtZSA9IHN0YWNrLnNwbGl0QXJuKGF0dHJzLnVzZXJHcm91cEFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcbiAgICAgIGlmICghZXh0cmFjdGVkVXNlckdyb3VwTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbmFibGUgdG8gZXh0cmFjdCB1c2VyIGdyb3VwIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgdXNlckdyb3VwTmFtZSA9IGV4dHJhY3RlZFVzZXJHcm91cE5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VyR3JvdXBOYW1lKSB7XG4gICAgICB1c2VyR3JvdXBOYW1lID0gYXR0cnMudXNlckdyb3VwTmFtZTtcbiAgICAgIHVzZXJHcm91cEFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAndXNlcmdyb3VwJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy51c2VyR3JvdXBOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09uZSBvZiB1c2VyR3JvdXBOYW1lIG9yIHVzZXJHcm91cEFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG5cbiAgICAgIHB1YmxpYyBnZXQgdXNlcnMoKTogSVVzZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBhdHRycy51c2VycyA/IFsuLi5hdHRycy51c2Vyc10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyR3JvdXBBcm46IHN0cmluZywgX3VzZXJHcm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJHcm91cEFybiA9IF91c2VyR3JvdXBBcm47XG4gICAgICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IF91c2VyR3JvdXBOYW1lO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh1c2VyR3JvdXBBcm4sIHVzZXJHcm91cE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJzOiBJVXNlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICogQ2FuIGJlICdjcmVhdGluZycsICdhY3RpdmUnLCAnbW9kaWZ5aW5nJywgJ2RlbGV0aW5nJ1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwU3RhdHVzOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuVXNlckdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBVc2VyR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IFVzZXJFbmdpbmUuVkFMS0VZO1xuICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IHByb3BzLnVzZXJHcm91cE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgLy8gRWxhc3RpY2FjaGUgbm90IGFsbG93aW5nIHVwcGVyY2FzZSB1c2VyIGdyb3VwIGlkXG4gICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVJZCh0aGlzKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJzKSB7XG4gICAgICB0aGlzLl91c2Vycy5wdXNoKC4uLnByb3BzLnVzZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblVzZXJHcm91cCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBlbmdpbmU6IHRoaXMuZW5naW5lLFxuICAgICAgdXNlckdyb3VwSWQ6IHRoaXMudXNlckdyb3VwTmFtZSxcbiAgICAgIHVzZXJJZHM6IExhenkubGlzdCh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlcnMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlcnMubWFwKHVzZXIgPT4gdXNlci51c2VySWQpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudXNlcnMpIHtcbiAgICAgIHByb3BzLnVzZXJzLmZvckVhY2godXNlciA9PiB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpKTtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJHcm91cEFybiA9IHRoaXMucmVzb3VyY2UuYXR0ckFybjtcbiAgICB0aGlzLnVzZXJHcm91cFN0YXR1cyA9IHRoaXMucmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIENsb3VkRm9ybWF0aW9uIGRlcGVuZGVuY3kgb24gdGhlIHVzZXIgcmVzb3VyY2UgdG8gZW5zdXJlIHByb3BlciBjcmVhdGlvbiBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgYWRkVXNlckRlcGVuZGVuY3kodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh1c2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJheSBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBEbyBub3QgcHVzaCBkaXJlY3RseSB0byB0aGlzIGFycmF5LlxuICAgKiBVc2UgYWRkVXNlcigpIGluc3RlYWQgdG8gZW5zdXJlIHByb3BlciB2YWxpZGF0aW9uIGFuZCBkZXBlbmRlbmN5IG1hbmFnZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJzKCk6IElVc2VyW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91c2VycztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXAgZm9yIGR1cGxpY2F0ZSB1c2VybmFtZXMgYW5kIFJlZGlzLXNwZWNpZmljIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VycygpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyTmFtZXMgPSB0aGlzLl91c2Vycy5tYXAodXNlciA9PiB1c2VyLnVzZXJOYW1lKTtcbiAgICBjb25zdCBkdXBsaWNhdGVzID0gdXNlck5hbWVzLmZpbHRlcigobmFtZSwgaW5kZXgpID0+IHVzZXJOYW1lcy5pbmRleE9mKG5hbWUpICE9PSBpbmRleCk7XG4gICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVXNlciBncm91cCBjYW5ub3QgaGF2ZSB1c2VycyB3aXRoIHRoZSBzYW1lIHVzZXIgbmFtZS4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmdpbmUgPT09IFVzZXJFbmdpbmUuUkVESVMpIHtcbiAgICAgIHRoaXMuX3VzZXJzLmZvckVhY2godXNlciA9PiB7XG4gICAgICAgIGlmICh1c2VyLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlZGlzIHVzZXIgZ3JvdXAgY2FuIG9ubHkgY29udGFpbiBSZWRpcyB1c2Vycy4nLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBoYXNEZWZhdWx0VXNlciA9IHRoaXMuX3VzZXJzLnNvbWUodXNlciA9PiB1c2VyLnVzZXJOYW1lID09PSAnZGVmYXVsdCcpO1xuICAgICAgaWYgKCFoYXNEZWZhdWx0VXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyB1c2VyIGdyb3VwcyBuZWVkIHRvIGNvbnRhaW4gYSB1c2VyIHdpdGggdGhlIHVzZXIgbmFtZSBcImRlZmF1bHRcIi4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBncm91cFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLl91c2Vycy5wdXNoKHVzZXIpO1xuICAgIHRoaXMuYWRkVXNlckRlcGVuZGVuY3kodXNlcik7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aws-cdk/aws-elasticache-alpha",
|
|
3
|
+
"version": "2.218.0-alpha.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "The CDK Construct Library for AWS::ElastiCache",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"types": "lib/index.d.ts",
|
|
8
|
+
"jsii": {
|
|
9
|
+
"outdir": "dist",
|
|
10
|
+
"targets": {
|
|
11
|
+
"dotnet": {
|
|
12
|
+
"namespace": "Amazon.CDK.AWS.ElastiCache.Alpha",
|
|
13
|
+
"packageId": "Amazon.CDK.AWS.ElastiCache.Alpha",
|
|
14
|
+
"iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png"
|
|
15
|
+
},
|
|
16
|
+
"java": {
|
|
17
|
+
"package": "software.amazon.awscdk.services.elasticache.alpha",
|
|
18
|
+
"maven": {
|
|
19
|
+
"groupId": "software.amazon.awscdk",
|
|
20
|
+
"artifactId": "elasticache-alpha"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"python": {
|
|
24
|
+
"distName": "aws-cdk.aws-elasticache-alpha",
|
|
25
|
+
"module": "aws_cdk.aws_elasticache_alpha",
|
|
26
|
+
"classifiers": [
|
|
27
|
+
"Framework :: AWS CDK",
|
|
28
|
+
"Framework :: AWS CDK :: 2"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"go": {
|
|
32
|
+
"moduleName": "github.com/aws/aws-cdk-go",
|
|
33
|
+
"packageName": "awscdkelasticachealpha"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"projectReferences": true,
|
|
37
|
+
"metadata": {
|
|
38
|
+
"jsii": {
|
|
39
|
+
"rosetta": {
|
|
40
|
+
"strict": true
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "https://github.com/aws/aws-cdk.git",
|
|
48
|
+
"directory": "packages/@aws-cdk/aws-elasticache-alpha"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/aws/aws-cdk",
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "cdk-build",
|
|
53
|
+
"integ": "integ-runner --unstable=toolkit-lib-engine --language javascript",
|
|
54
|
+
"lint": "cdk-lint",
|
|
55
|
+
"package": "cdk-package",
|
|
56
|
+
"awslint": "cdk-awslint",
|
|
57
|
+
"pkglint": "pkglint -f",
|
|
58
|
+
"test": "cdk-test",
|
|
59
|
+
"watch": "cdk-watch",
|
|
60
|
+
"build+test": "yarn build && yarn test",
|
|
61
|
+
"build+test+package": "yarn build+test && yarn package",
|
|
62
|
+
"compat": "cdk-compat",
|
|
63
|
+
"rosetta:extract": "yarn --silent jsii-rosetta extract",
|
|
64
|
+
"build+extract": "yarn build && yarn rosetta:extract",
|
|
65
|
+
"build+test+extract": "yarn build+test && yarn rosetta:extract"
|
|
66
|
+
},
|
|
67
|
+
"cdk-build": {
|
|
68
|
+
"env": {
|
|
69
|
+
"AWSLINT_BASE_CONSTRUCT": true
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"keywords": [
|
|
73
|
+
"aws",
|
|
74
|
+
"cdk",
|
|
75
|
+
"constructs",
|
|
76
|
+
"AWS::ElastiCache",
|
|
77
|
+
"aws-elasticache"
|
|
78
|
+
],
|
|
79
|
+
"author": {
|
|
80
|
+
"name": "Amazon Web Services",
|
|
81
|
+
"url": "https://aws.amazon.com",
|
|
82
|
+
"organization": true
|
|
83
|
+
},
|
|
84
|
+
"license": "Apache-2.0",
|
|
85
|
+
"devDependencies": {
|
|
86
|
+
"@aws-cdk/cdk-build-tools": "2.218.0-alpha.0",
|
|
87
|
+
"@aws-cdk/integ-runner": "^2.190.2",
|
|
88
|
+
"@aws-cdk/pkglint": "2.218.0-alpha.0",
|
|
89
|
+
"@types/jest": "^29.5.14",
|
|
90
|
+
"jest": "^29.7.0",
|
|
91
|
+
"aws-cdk-lib": "2.218.0",
|
|
92
|
+
"constructs": "^10.0.0",
|
|
93
|
+
"@aws-cdk/integ-tests-alpha": "2.218.0-alpha.0"
|
|
94
|
+
},
|
|
95
|
+
"dependencies": {},
|
|
96
|
+
"peerDependencies": {
|
|
97
|
+
"aws-cdk-lib": "^2.218.0",
|
|
98
|
+
"constructs": "^10.0.0"
|
|
99
|
+
},
|
|
100
|
+
"engines": {
|
|
101
|
+
"node": ">= 18.0.0"
|
|
102
|
+
},
|
|
103
|
+
"stability": "experimental",
|
|
104
|
+
"maturity": "experimental",
|
|
105
|
+
"awscdkio": {
|
|
106
|
+
"announce": false
|
|
107
|
+
},
|
|
108
|
+
"publishConfig": {
|
|
109
|
+
"tag": "latest"
|
|
110
|
+
},
|
|
111
|
+
"pkglint": {
|
|
112
|
+
"exclude": [
|
|
113
|
+
"naming/package-matches-directory",
|
|
114
|
+
"assert/assert-dependency"
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Fixture with packages imported, but nothing else
|
|
2
|
+
import * as elasticache from '@aws-cdk/aws-elasticache-alpha';
|
|
3
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
4
|
+
import * as scheduler from 'aws-cdk-lib/aws-scheduler';
|
|
5
|
+
import * as events from 'aws-cdk-lib/aws-events';
|
|
6
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
7
|
+
import { Construct } from 'constructs';
|
|
8
|
+
import { Stack, SecretValue, Size } from 'aws-cdk-lib';
|
|
9
|
+
|
|
10
|
+
class Fixture extends Stack {
|
|
11
|
+
constructor(scope: Construct, id: string) {
|
|
12
|
+
super(scope, id);
|
|
13
|
+
|
|
14
|
+
/// here
|
|
15
|
+
}
|
|
16
|
+
}
|