cdk8s-plus-31 2.0.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.
Files changed (114) hide show
  1. package/.backportrc.json +17 -0
  2. package/.jsii +90235 -0
  3. package/CODE_OF_CONDUCT.md +3 -0
  4. package/CONTRIBUTING.md +185 -0
  5. package/DCO +34 -0
  6. package/LICENSE +202 -0
  7. package/NOTICE +1 -0
  8. package/OWNERS.md +5 -0
  9. package/README.md +32 -0
  10. package/SECURITY.md +5 -0
  11. package/cdk8s.yaml +8 -0
  12. package/docs/java.md +23855 -0
  13. package/docs/plus/config-map.md +98 -0
  14. package/docs/plus/container.md +133 -0
  15. package/docs/plus/cronjob.md +67 -0
  16. package/docs/plus/deployment.md +232 -0
  17. package/docs/plus/horizontal-pod-autoscaler.md +226 -0
  18. package/docs/plus/ingress.md +68 -0
  19. package/docs/plus/job.md +48 -0
  20. package/docs/plus/namespace.md +58 -0
  21. package/docs/plus/network-policy.md +341 -0
  22. package/docs/plus/pod.md +455 -0
  23. package/docs/plus/pv.md +82 -0
  24. package/docs/plus/pvc.md +77 -0
  25. package/docs/plus/rbac.md +104 -0
  26. package/docs/plus/secret.md +32 -0
  27. package/docs/plus/service-account.md +35 -0
  28. package/docs/plus/service.md +41 -0
  29. package/docs/plus/volume.md +38 -0
  30. package/docs/python.md +26079 -0
  31. package/docs/typescript.md +19565 -0
  32. package/git-hooks/README.md +9 -0
  33. package/git-hooks/prepare-commit-msg +18 -0
  34. package/git-hooks/setup.sh +10 -0
  35. package/lib/_action.d.ts +21 -0
  36. package/lib/_action.js +32 -0
  37. package/lib/api-resource.d.ts +298 -0
  38. package/lib/api-resource.js +430 -0
  39. package/lib/base.d.ts +79 -0
  40. package/lib/base.js +92 -0
  41. package/lib/config-map.d.ts +126 -0
  42. package/lib/config-map.js +159 -0
  43. package/lib/container.d.ts +1057 -0
  44. package/lib/container.js +845 -0
  45. package/lib/cron-job.d.ts +138 -0
  46. package/lib/cron-job.js +103 -0
  47. package/lib/daemon-set.d.ts +45 -0
  48. package/lib/daemon-set.js +55 -0
  49. package/lib/deployment.d.ts +223 -0
  50. package/lib/deployment.js +214 -0
  51. package/lib/handler.d.ts +62 -0
  52. package/lib/handler.js +54 -0
  53. package/lib/horizontal-pod-autoscaler.d.ts +500 -0
  54. package/lib/horizontal-pod-autoscaler.js +569 -0
  55. package/lib/imports/k8s.d.ts +21534 -0
  56. package/lib/imports/k8s.js +16496 -0
  57. package/lib/index.d.ts +26 -0
  58. package/lib/index.js +39 -0
  59. package/lib/ingress.d.ts +230 -0
  60. package/lib/ingress.js +246 -0
  61. package/lib/job.d.ts +64 -0
  62. package/lib/job.js +54 -0
  63. package/lib/namespace.d.ts +128 -0
  64. package/lib/namespace.js +109 -0
  65. package/lib/network-policy.d.ts +311 -0
  66. package/lib/network-policy.js +344 -0
  67. package/lib/pod.d.ts +1080 -0
  68. package/lib/pod.js +1139 -0
  69. package/lib/probe.d.ts +141 -0
  70. package/lib/probe.js +77 -0
  71. package/lib/pv.d.ts +375 -0
  72. package/lib/pv.js +273 -0
  73. package/lib/pvc.d.ts +163 -0
  74. package/lib/pvc.js +152 -0
  75. package/lib/role-binding.d.ts +138 -0
  76. package/lib/role-binding.js +165 -0
  77. package/lib/role.d.ts +268 -0
  78. package/lib/role.js +401 -0
  79. package/lib/secret.d.ts +195 -0
  80. package/lib/secret.js +185 -0
  81. package/lib/service-account.d.ts +83 -0
  82. package/lib/service-account.js +105 -0
  83. package/lib/service.d.ts +289 -0
  84. package/lib/service.js +182 -0
  85. package/lib/stateful-set.d.ts +169 -0
  86. package/lib/stateful-set.js +174 -0
  87. package/lib/utils.d.ts +4 -0
  88. package/lib/utils.js +34 -0
  89. package/lib/volume.d.ts +573 -0
  90. package/lib/volume.js +371 -0
  91. package/lib/workload.d.ts +121 -0
  92. package/lib/workload.js +122 -0
  93. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  94. package/node_modules/balanced-match/LICENSE.md +21 -0
  95. package/node_modules/balanced-match/README.md +97 -0
  96. package/node_modules/balanced-match/index.js +62 -0
  97. package/node_modules/balanced-match/package.json +48 -0
  98. package/node_modules/concat-map/.travis.yml +4 -0
  99. package/node_modules/concat-map/LICENSE +18 -0
  100. package/node_modules/concat-map/README.markdown +62 -0
  101. package/node_modules/concat-map/example/map.js +6 -0
  102. package/node_modules/concat-map/index.js +13 -0
  103. package/node_modules/concat-map/package.json +43 -0
  104. package/node_modules/concat-map/test/map.js +39 -0
  105. package/node_modules/minimatch/LICENSE +15 -0
  106. package/node_modules/minimatch/README.md +230 -0
  107. package/node_modules/minimatch/minimatch.js +947 -0
  108. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  109. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  110. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  111. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  112. package/node_modules/minimatch/package.json +33 -0
  113. package/package.json +186 -0
  114. package/rotate.md +84 -0
package/lib/role.js ADDED
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ClusterRole = exports.Role = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk8s_1 = require("cdk8s");
7
+ const constructs_1 = require("constructs");
8
+ const base = require("./base");
9
+ const k8s = require("./imports/k8s");
10
+ const rb = require("./role-binding");
11
+ const utils_1 = require("./utils");
12
+ class ImportedRole extends constructs_1.Construct {
13
+ constructor(scope, id, name) {
14
+ super(scope, id);
15
+ this.resourceType = 'roles';
16
+ this._name = name;
17
+ }
18
+ get name() {
19
+ return this._name;
20
+ }
21
+ get apiVersion() {
22
+ return k8s.KubeRole.GVK.apiVersion;
23
+ }
24
+ get apiGroup() {
25
+ return 'rbac.authorization.k8s.io';
26
+ }
27
+ get kind() {
28
+ return k8s.KubeRole.GVK.kind;
29
+ }
30
+ get resourceName() {
31
+ return this.name;
32
+ }
33
+ }
34
+ /**
35
+ * Role is a namespaced, logical grouping of PolicyRules that can be referenced
36
+ * as a unit by a RoleBinding.
37
+ */
38
+ class Role extends base.Resource {
39
+ constructor(scope, id, props = {}) {
40
+ super(scope, id);
41
+ this.resourceType = 'roles';
42
+ this._rules = [];
43
+ this.apiObject = new k8s.KubeRole(this, 'Resource', {
44
+ metadata: props.metadata,
45
+ rules: cdk8s_1.Lazy.any({ produce: () => this.synthesizeRules() }),
46
+ });
47
+ for (const rule of props.rules ?? []) {
48
+ this.allow(rule.verbs, ...rule.resources);
49
+ }
50
+ }
51
+ /**
52
+ * Imports a role from the cluster as a reference.
53
+ */
54
+ static fromRoleName(scope, id, name) {
55
+ return new ImportedRole(scope, id, name);
56
+ }
57
+ /**
58
+ * Rules associaated with this Role.
59
+ * Returns a copy, use `allow` to add rules.
60
+ */
61
+ get rules() {
62
+ return [...this._rules];
63
+ }
64
+ /**
65
+ * Add permission to perform a list of HTTP verbs on a collection of
66
+ * resources.
67
+ *
68
+ * @param resources The resource(s) to apply to
69
+ * @see https://kubernetes.io/docs/reference/access-authn-authz/authorization/#determine-the-request-verb
70
+ */
71
+ allow(verbs, ...resources) {
72
+ this._rules.push({ verbs, resources });
73
+ }
74
+ /**
75
+ * Add "create" permission for the resources.
76
+ * @param resources The resource(s) to apply to
77
+ */
78
+ allowCreate(...resources) {
79
+ this.allow(['create'], ...resources);
80
+ }
81
+ /**
82
+ * Add "get" permission for the resources.
83
+ * @param resources The resource(s) to apply to
84
+ */
85
+ allowGet(...resources) {
86
+ this.allow(['get'], ...resources);
87
+ }
88
+ /**
89
+ * Add "list" permission for the resources.
90
+ * @param resources The resource(s) to apply to
91
+ */
92
+ allowList(...resources) {
93
+ this.allow(['list'], ...resources);
94
+ }
95
+ /**
96
+ * Add "watch" permission for the resources.
97
+ * @param resources The resource(s) to apply to
98
+ */
99
+ allowWatch(...resources) {
100
+ this.allow(['watch'], ...resources);
101
+ }
102
+ /**
103
+ * Add "update" permission for the resources.
104
+ * @param resources The resource(s) to apply to
105
+ */
106
+ allowUpdate(...resources) {
107
+ this.allow(['update'], ...resources);
108
+ }
109
+ /**
110
+ * Add "patch" permission for the resources.
111
+ * @param resources The resource(s) to apply to
112
+ */
113
+ allowPatch(...resources) {
114
+ this.allow(['patch'], ...resources);
115
+ }
116
+ /**
117
+ * Add "delete" permission for the resources.
118
+ * @param resources The resource(s) to apply to
119
+ */
120
+ allowDelete(...resources) {
121
+ this.allow(['delete'], ...resources);
122
+ }
123
+ /**
124
+ * Add "deletecollection" permission for the resources.
125
+ * @param resources The resource(s) to apply to
126
+ */
127
+ allowDeleteCollection(...resources) {
128
+ this.allow(['deletecollection'], ...resources);
129
+ }
130
+ /**
131
+ * Add "get", "list", and "watch" permissions for the resources.
132
+ * @param resources The resource(s) to apply to
133
+ */
134
+ allowRead(...resources) {
135
+ this.allow(['get', 'list', 'watch'], ...resources);
136
+ }
137
+ /**
138
+ * Add "get", "list", "watch", "create", "update", "patch", "delete", and
139
+ * "deletecollection" permissions for the resources.
140
+ *
141
+ * @param resources The resource(s) to apply to
142
+ */
143
+ allowReadWrite(...resources) {
144
+ this.allow(['get', 'list', 'watch', 'create', 'update', 'patch', 'delete', 'deletecollection'], ...resources);
145
+ }
146
+ /**
147
+ * Create a RoleBinding that binds the permissions in this Role
148
+ * to a list of subjects, that will only apply this role's namespace.
149
+ * @param subjects a list of subjects to bind to
150
+ */
151
+ bind(...subjects) {
152
+ const subjectsAddress = utils_1.address(...subjects);
153
+ const binding = new rb.RoleBinding(this, `RoleBinding${subjectsAddress}`, {
154
+ metadata: {
155
+ namespace: this.metadata.namespace,
156
+ },
157
+ role: this,
158
+ });
159
+ binding.addSubjects(...subjects);
160
+ return binding;
161
+ }
162
+ synthesizeRules() {
163
+ const rules = [];
164
+ for (const rule of this._rules) {
165
+ for (const resource of rule.resources) {
166
+ rules.push({
167
+ verbs: rule.verbs,
168
+ apiGroups: [resource.apiGroup === 'core' ? '' : resource.apiGroup],
169
+ resourceNames: resource.resourceName ? [resource.resourceName] : undefined,
170
+ resources: resource.resourceType ? [resource.resourceType] : undefined,
171
+ });
172
+ }
173
+ }
174
+ return rules;
175
+ }
176
+ }
177
+ exports.Role = Role;
178
+ _a = JSII_RTTI_SYMBOL_1;
179
+ Role[_a] = { fqn: "cdk8s-plus-31.Role", version: "2.0.0" };
180
+ class ImportedClusterRole extends constructs_1.Construct {
181
+ constructor(scope, id, name) {
182
+ super(scope, id);
183
+ this.resourceType = 'clusterroles';
184
+ this._name = name;
185
+ }
186
+ get name() {
187
+ return this._name;
188
+ }
189
+ get apiVersion() {
190
+ return k8s.KubeClusterRole.GVK.apiVersion;
191
+ }
192
+ get apiGroup() {
193
+ return 'rbac.authorization.k8s.io';
194
+ }
195
+ get kind() {
196
+ return k8s.KubeClusterRole.GVK.kind;
197
+ }
198
+ get resourceName() {
199
+ return this.name;
200
+ }
201
+ }
202
+ /**
203
+ * ClusterRole is a cluster level, logical grouping of PolicyRules that can be
204
+ * referenced as a unit by a RoleBinding or ClusterRoleBinding.
205
+ */
206
+ class ClusterRole extends base.Resource {
207
+ constructor(scope, id, props = {}) {
208
+ super(scope, id);
209
+ this.resourceType = 'clusterroles';
210
+ this._labelSelector = {};
211
+ this._rules = [];
212
+ this.apiObject = new k8s.KubeClusterRole(this, 'Resource', {
213
+ metadata: props.metadata,
214
+ rules: cdk8s_1.Lazy.any({ produce: () => this.synthesizeRules() }),
215
+ aggregationRule: cdk8s_1.Lazy.any({ produce: () => this.synthesizeAggregationRules() }),
216
+ });
217
+ for (const rule of props.rules ?? []) {
218
+ this.allow(rule.verbs, ...rule.endpoints);
219
+ }
220
+ for (const [key, value] of Object.entries(props.aggregationLabels ?? {})) {
221
+ this.aggregate(key, value);
222
+ }
223
+ }
224
+ /**
225
+ * Imports a role from the cluster as a reference.
226
+ */
227
+ static fromClusterRoleName(scope, id, name) {
228
+ return new ImportedClusterRole(scope, id, name);
229
+ }
230
+ /**
231
+ * Rules associaated with this Role.
232
+ * Returns a copy, use `allow` to add rules.
233
+ */
234
+ get rules() {
235
+ return [...this._rules];
236
+ }
237
+ /**
238
+ * Add permission to perform a list of HTTP verbs on a collection of
239
+ * resources.
240
+ *
241
+ * @param endpoints The endpoints(s) to apply to
242
+ * @see https://kubernetes.io/docs/reference/access-authn-authz/authorization/#determine-the-request-verb
243
+ */
244
+ allow(verbs, ...endpoints) {
245
+ this._rules.push({ verbs, endpoints });
246
+ }
247
+ /**
248
+ * Add "create" permission for the resources.
249
+ * @param endpoints The resource(s) to apply to
250
+ */
251
+ allowCreate(...endpoints) {
252
+ this.allow(['create'], ...endpoints);
253
+ }
254
+ /**
255
+ * Add "get" permission for the resources.
256
+ * @param endpoints The resource(s) to apply to
257
+ */
258
+ allowGet(...endpoints) {
259
+ this.allow(['get'], ...endpoints);
260
+ }
261
+ /**
262
+ * Add "list" permission for the resources.
263
+ * @param endpoints The resource(s) to apply to
264
+ */
265
+ allowList(...endpoints) {
266
+ this.allow(['list'], ...endpoints);
267
+ }
268
+ /**
269
+ * Add "watch" permission for the resources.
270
+ * @param endpoints The resource(s) to apply to
271
+ */
272
+ allowWatch(...endpoints) {
273
+ this.allow(['watch'], ...endpoints);
274
+ }
275
+ /**
276
+ * Add "update" permission for the resources.
277
+ * @param endpoints The resource(s) to apply to
278
+ */
279
+ allowUpdate(...endpoints) {
280
+ this.allow(['update'], ...endpoints);
281
+ }
282
+ /**
283
+ * Add "patch" permission for the resources.
284
+ * @param endpoints The resource(s) to apply to
285
+ */
286
+ allowPatch(...endpoints) {
287
+ this.allow(['patch'], ...endpoints);
288
+ }
289
+ /**
290
+ * Add "delete" permission for the resources.
291
+ * @param endpoints The resource(s) to apply to
292
+ */
293
+ allowDelete(...endpoints) {
294
+ this.allow(['delete'], ...endpoints);
295
+ }
296
+ /**
297
+ * Add "deletecollection" permission for the resources.
298
+ * @param endpoints The resource(s) to apply to
299
+ */
300
+ allowDeleteCollection(...endpoints) {
301
+ this.allow(['deletecollection'], ...endpoints);
302
+ }
303
+ /**
304
+ * Add "get", "list", and "watch" permissions for the resources.
305
+ * @param endpoints The resource(s) to apply to
306
+ */
307
+ allowRead(...endpoints) {
308
+ this.allow(['get', 'list', 'watch'], ...endpoints);
309
+ }
310
+ /**
311
+ * Add "get", "list", "watch", "create", "update", "patch", "delete", and
312
+ * "deletecollection" permissions for the resources.
313
+ *
314
+ * @param endpoints The resource(s) to apply to
315
+ */
316
+ allowReadWrite(...endpoints) {
317
+ this.allow(['get', 'list', 'watch', 'create', 'update', 'patch', 'delete', 'deletecollection'], ...endpoints);
318
+ }
319
+ /**
320
+ * Aggregate rules from roles matching this label selector.
321
+ */
322
+ aggregate(key, value) {
323
+ this._labelSelector[key] = value;
324
+ }
325
+ /**
326
+ * Combines the rules of the argument ClusterRole into this ClusterRole
327
+ * using aggregation labels.
328
+ * @param rol
329
+ */
330
+ combine(rol) {
331
+ const key = `cdk8s.cluster-role/aggregate-to-${cdk8s_1.Names.toLabelValue(this)}`;
332
+ const value = 'true';
333
+ rol.metadata.addLabel(key, value);
334
+ this.aggregate(key, value);
335
+ }
336
+ /**
337
+ * Create a RoleBinding that binds the permissions in this ClusterRole
338
+ * to a list of subjects, that will only apply to the given namespace.
339
+ * @param namespace the namespace to limit permissions to.
340
+ * @param subjects a list of subjects to bind to
341
+ */
342
+ bindInNamespace(namespace, ...subjects) {
343
+ const binding = new rb.RoleBinding(this, `RoleBinding-${namespace}`, {
344
+ metadata: {
345
+ namespace,
346
+ },
347
+ role: this,
348
+ });
349
+ binding.addSubjects(...subjects);
350
+ return binding;
351
+ }
352
+ /**
353
+ * Create a ClusterRoleBinding that binds the permissions in this
354
+ * ClusterRole to a list of subjects, without namespace restrictions.
355
+ * @param subjects a list of subjects to bind to
356
+ */
357
+ bind(...subjects) {
358
+ const binding = new rb.ClusterRoleBinding(this, 'ClusterRoleBinding', {
359
+ role: this,
360
+ });
361
+ binding.addSubjects(...subjects);
362
+ return binding;
363
+ }
364
+ synthesizeRules() {
365
+ const rules = [];
366
+ for (const rule of this._rules) {
367
+ for (const endpoint of rule.endpoints) {
368
+ const resource = endpoint.asApiResource();
369
+ const nonResource = endpoint.asNonApiResource();
370
+ if (resource && nonResource) {
371
+ throw new Error('Endpoint must be either resource or non resource. not both.');
372
+ }
373
+ if (!resource && !nonResource) {
374
+ throw new Error('Endpoint must be either resource or non resource. not neither.');
375
+ }
376
+ if (resource) {
377
+ rules.push({
378
+ apiGroups: [resource.apiGroup === 'core' ? '' : resource.apiGroup],
379
+ resources: [resource.resourceType],
380
+ resourceNames: resource.resourceName ? [resource.resourceName] : [],
381
+ verbs: rule.verbs,
382
+ });
383
+ }
384
+ if (nonResource) {
385
+ rules.push({ verbs: rule.verbs, nonResourceUrLs: [nonResource] });
386
+ }
387
+ }
388
+ }
389
+ return rules;
390
+ }
391
+ synthesizeAggregationRules() {
392
+ if (Object.keys(this._labelSelector).length === 0) {
393
+ return undefined;
394
+ }
395
+ return { clusterRoleSelectors: [{ matchLabels: this._labelSelector }] };
396
+ }
397
+ }
398
+ exports.ClusterRole = ClusterRole;
399
+ _b = JSII_RTTI_SYMBOL_1;
400
+ ClusterRole[_b] = { fqn: "cdk8s-plus-31.ClusterRole", version: "2.0.0" };
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBQStDO0FBQy9DLDJDQUF1QztBQUV2QywrQkFBK0I7QUFDL0IscUNBQXFDO0FBQ3JDLHFDQUFxQztBQUNyQyxtQ0FBa0M7QUFzQ2xDLE1BQU0sWUFBYSxTQUFRLHNCQUFTO0lBTWxDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsSUFBWTtRQUNwRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSEgsaUJBQVksR0FBRyxPQUFPLENBQUM7UUFJckMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTywyQkFBMkIsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUVGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxJQUFLLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFrQnJDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBbUIsRUFBRTtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTEgsaUJBQVksR0FBRyxPQUFPLENBQUM7UUFFdEIsV0FBTSxHQUEwQixFQUFFLENBQUM7UUFLbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcs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QkFDbEMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7cUJBQ2xCLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxJQUFJLFdBQVcsRUFBRTtvQkFDZixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNuRTthQUNGO1NBRUY7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxRSxDQUFDOztBQWpPSCxrQ0FrT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenksIE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJQXBpUmVzb3VyY2UsIElBcGlFbmRwb2ludCB9IGZyb20gJy4vYXBpLXJlc291cmNlJztcbmltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIHJiIGZyb20gJy4vcm9sZS1iaW5kaW5nJztcbmltcG9ydCB7IGFkZHJlc3MgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byBhbnkgUm9sZSBvciBDbHVzdGVyUm9sZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm9sZSBleHRlbmRzIGJhc2UuSVJlc291cmNlIHtcblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBSb2xlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xlUHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcnVsZXMgdGhlIHJvbGUgc2hvdWxkIGFsbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBSb2xlUG9saWN5UnVsZVtdO1xufVxuXG4vKipcbiAqIFBvbGljeSBydWxlIG9mIGEgYFJvbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZVBvbGljeVJ1bGUge1xuXG4gIC8qKlxuICAgKiBWZXJicyB0byBhbGxvdy4gKGUuZyBbJ2dldCcsICd3YXRjaCddKVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZXMgdGhpcyBydWxlIGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM6IElBcGlSZXNvdXJjZVtdO1xufVxuXG5jbGFzcyBJbXBvcnRlZFJvbGUgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUm9sZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAncm9sZXMnO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBrOHMuS3ViZVJvbGUuR1ZLLmFwaVZlcnNpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaUdyb3VwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdyYmFjLmF1dGhvcml6YXRpb24uazhzLmlvJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2luZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBrOHMuS3ViZVJvbGUuR1ZLLmtpbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc291cmNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxufVxuXG4vKipcbiAqIFJvbGUgaXMgYSBuYW1lc3BhY2VkLCBsb2dpY2FsIGdyb3VwaW5nIG9mIFBvbGljeVJ1bGVzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWRcbiAqIGFzIGEgdW5pdCBieSBhIFJvbGVCaW5kaW5nLlxuICovXG5leHBvcnQgY2xhc3MgUm9sZSBleHRlbmRzIGJhc2UuUmVzb3VyY2UgaW1wbGVtZW50cyBJUm9sZSB7XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYSByb2xlIGZyb20gdGhlIGNsdXN0ZXIgYXMgYSByZWZlcmVuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Sb2xlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJUm9sZSB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZFJvbGUoc2NvcGUsIGlkLCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIGJhc2UuUmVzb3VyY2UuYXBpT2JqZWN0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZSA9ICdyb2xlcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcnVsZXM6IEFycmF5PFJvbGVQb2xpY3lSdWxlPiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb2xlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFwaU9iamVjdCA9IG5ldyBrOHMuS3ViZVJvbGUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgcnVsZXM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5zeW50aGVzaXplUnVsZXMoKSB9KSxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBwcm9wcy5ydWxlcyA/PyBbXSkge1xuICAgICAgdGhpcy5hbGxvdyhydWxlLnZlcmJzLCAuLi5ydWxlLnJlc291cmNlcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bGVzIGFzc29jaWFhdGVkIHdpdGggdGhpcyBSb2xlLlxuICAgKiBSZXR1cm5zIGEgY29weSwgdXNlIGBhbGxvd2AgdG8gYWRkIHJ1bGVzLlxuICAgKi9cbiAgcHVibGljIGdldCBydWxlcygpOiBSb2xlUG9saWN5UnVsZVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3J1bGVzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcGVybWlzc2lvbiB0byBwZXJmb3JtIGEgbGlzdCBvZiBIVFRQIHZlcmJzIG9uIGEgY29sbGVjdGlvbiBvZlxuICAgKiByZXNvdXJjZXMuXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlKHMpIHRvIGFwcGx5IHRvXG4gICAqIEBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvcmVmZXJlbmNlL2FjY2Vzcy1hdXRobi1hdXRoei9hdXRob3JpemF0aW9uLyNkZXRlcm1pbmUtdGhlLXJlcXVlc3QtdmVyYlxuICAgKi9cbiAgcHVibGljIGFsbG93KHZlcmJzOiBzdHJpbmdbXSwgLi4ucmVzb3VyY2VzOiBJQXBpUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIHRoaXMuX3J1bGVzLnB1c2goeyB2ZXJicywgcmVzb3VyY2VzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcImNyZWF0ZVwiIHBlcm1pc3Npb24gZm9yIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlKHMpIHRvIGFwcGx5IHRvXG4gICAqL1xuICBwdWJsaWMgYWxsb3dDcmVhdGUoLi4ucmVzb3VyY2VzOiBJQXBpUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxsb3coWydjcmVhdGUnXSwgLi4ucmVzb3VyY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgXCJnZXRcIiBwZXJtaXNzaW9uIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93R2V0KC4uLnJlc291cmNlczogSUFwaVJlc291cmNlW10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnZ2V0J10sIC4uLnJlc291cmNlcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwibGlzdFwiIHBlcm1pc3Npb24gZm9yIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlKHMpIHRvIGFwcGx5IHRvXG4gICAqL1xuICBwdWJsaWMgYWxsb3dMaXN0KC4uLnJlc291cmNlczogSUFwaVJlc291cmNlW10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnbGlzdCddLCAuLi5yZXNvdXJjZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcIndhdGNoXCIgcGVybWlzc2lvbiBmb3IgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIHJlc291cmNlcyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd1dhdGNoKC4uLnJlc291cmNlczogSUFwaVJlc291cmNlW10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnd2F0Y2gnXSwgLi4ucmVzb3VyY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgXCJ1cGRhdGVcIiBwZXJtaXNzaW9uIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93VXBkYXRlKC4uLnJlc291cmNlczogSUFwaVJlc291cmNlW10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsndXBkYXRlJ10sIC4uLnJlc291cmNlcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwicGF0Y2hcIiBwZXJtaXNzaW9uIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93UGF0Y2goLi4ucmVzb3VyY2VzOiBJQXBpUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxsb3coWydwYXRjaCddLCAuLi5yZXNvdXJjZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcImRlbGV0ZVwiIHBlcm1pc3Npb24gZm9yIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlKHMpIHRvIGFwcGx5IHRvXG4gICAqL1xuICBwdWJsaWMgYWxsb3dEZWxldGUoLi4ucmVzb3VyY2VzOiBJQXBpUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxsb3coWydkZWxldGUnXSwgLi4ucmVzb3VyY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgXCJkZWxldGVjb2xsZWN0aW9uXCIgcGVybWlzc2lvbiBmb3IgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIHJlc291cmNlcyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd0RlbGV0ZUNvbGxlY3Rpb24oLi4ucmVzb3VyY2VzOiBJQXBpUmVzb3VyY2VbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxsb3coWydkZWxldGVjb2xsZWN0aW9uJ10sIC4uLnJlc291cmNlcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwiZ2V0XCIsIFwibGlzdFwiLCBhbmQgXCJ3YXRjaFwiIHBlcm1pc3Npb25zIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93UmVhZCguLi5yZXNvdXJjZXM6IElBcGlSZXNvdXJjZVtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvdyhbJ2dldCcsICdsaXN0JywgJ3dhdGNoJ10sIC4uLnJlc291cmNlcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwiZ2V0XCIsIFwibGlzdFwiLCBcIndhdGNoXCIsIFwiY3JlYXRlXCIsIFwidXBkYXRlXCIsIFwicGF0Y2hcIiwgXCJkZWxldGVcIiwgYW5kXG4gICAqIFwiZGVsZXRlY29sbGVjdGlvblwiIHBlcm1pc3Npb25zIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93UmVhZFdyaXRlKC4uLnJlc291cmNlczogSUFwaVJlc291cmNlW10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnZ2V0JywgJ2xpc3QnLCAnd2F0Y2gnLCAnY3JlYXRlJywgJ3VwZGF0ZScsICdwYXRjaCcsICdkZWxldGUnLCAnZGVsZXRlY29sbGVjdGlvbiddLCAuLi5yZXNvdXJjZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFJvbGVCaW5kaW5nIHRoYXQgYmluZHMgdGhlIHBlcm1pc3Npb25zIGluIHRoaXMgUm9sZVxuICAgKiB0byBhIGxpc3Qgb2Ygc3ViamVjdHMsIHRoYXQgd2lsbCBvbmx5IGFwcGx5IHRoaXMgcm9sZSdzIG5hbWVzcGFjZS5cbiAgICogQHBhcmFtIHN1YmplY3RzIGEgbGlzdCBvZiBzdWJqZWN0cyB0byBiaW5kIHRvXG4gICAqL1xuICBwdWJsaWMgYmluZCguLi5zdWJqZWN0czogcmIuSVN1YmplY3RbXSk6IHJiLlJvbGVCaW5kaW5nIHtcbiAgICBjb25zdCBzdWJqZWN0c0FkZHJlc3MgPSBhZGRyZXNzKC4uLnN1YmplY3RzKTtcbiAgICBjb25zdCBiaW5kaW5nID0gbmV3IHJiLlJvbGVCaW5kaW5nKHRoaXMsIGBSb2xlQmluZGluZyR7c3ViamVjdHNBZGRyZXNzfWAsIHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWVzcGFjZTogdGhpcy5tZXRhZGF0YS5uYW1lc3BhY2UsXG4gICAgICB9LFxuICAgICAgcm9sZTogdGhpcyxcbiAgICB9KTtcbiAgICBiaW5kaW5nLmFkZFN1YmplY3RzKC4uLnN1YmplY3RzKTtcbiAgICByZXR1cm4gYmluZGluZztcbiAgfVxuXG4gIHByaXZhdGUgc3ludGhlc2l6ZVJ1bGVzKCk6IGs4cy5Qb2xpY3lSdWxlW10ge1xuICAgIGNvbnN0IHJ1bGVzOiBrOHMuUG9saWN5UnVsZVtdID0gW107XG4gICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMuX3J1bGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIHJ1bGUucmVzb3VyY2VzKSB7XG4gICAgICAgIHJ1bGVzLnB1c2goe1xuICAgICAgICAgIHZlcmJzOiBydWxlLnZlcmJzLFxuICAgICAgICAgIGFwaUdyb3VwczogW3Jlc291cmNlLmFwaUdyb3VwID09PSAnY29yZScgPyAnJyA6IHJlc291cmNlLmFwaUdyb3VwXSxcbiAgICAgICAgICByZXNvdXJjZU5hbWVzOiByZXNvdXJjZS5yZXNvdXJjZU5hbWUgPyBbcmVzb3VyY2UucmVzb3VyY2VOYW1lXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZXNvdXJjZXM6IHJlc291cmNlLnJlc291cmNlVHlwZSA/IFtyZXNvdXJjZS5yZXNvdXJjZVR5cGVdIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNsdXN0ZXItbGV2ZWwgcm9sZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2x1c3RlclJvbGUgZXh0ZW5kcyBiYXNlLklSZXNvdXJjZSB7XG5cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgQ2x1c3RlclJvbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJSb2xlUHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge1xuXG4gIC8qKlxuICAgICogQSBsaXN0IG9mIHJ1bGVzIHRoZSByb2xlIHNob3VsZCBhbGxvdy5cbiAgICAqXG4gICAgKiBAZGVmYXVsdCBbXVxuICAgICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogQ2x1c3RlclJvbGVQb2xpY3lSdWxlW107XG5cbiAgLyoqXG4gICAgKiBTcGVjaWZ5IGxhYmVscyB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvY2F0ZSBDbHVzdGVyUm9sZXMsIHdob3NlIHJ1bGVzXG4gICAgKiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkIGludG8gdGhpcyBDbHVzdGVyUm9sZSdzIHJ1bGVzLlxuICAgICovXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0aW9uTGFiZWxzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBQb2xpY3kgcnVsZSBvZiBhIGBDbHVzdGVyUm9sZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyUm9sZVBvbGljeVJ1bGUge1xuXG4gIC8qKlxuICAgKiBWZXJicyB0byBhbGxvdy4gKGUuZyBbJ2dldCcsICd3YXRjaCddKVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbmRwb2ludHMgdGhpcyBydWxlIGFwcGxpZXMgdG8uIENhbiBiZSBlaXRoZXIgYXBpIHJlc291cmNlc1xuICAgKiBvciBub24gYXBpIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50czogSUFwaUVuZHBvaW50W107XG59XG5cbmNsYXNzIEltcG9ydGVkQ2x1c3RlclJvbGUgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ2x1c3RlclJvbGUge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmcgPSAnY2x1c3RlcnJvbGVzJztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gazhzLkt1YmVDbHVzdGVyUm9sZS5HVksuYXBpVmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpR3JvdXAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3JiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8nO1xuICB9XG5cbiAgcHVibGljIGdldCBraW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGs4cy5LdWJlQ2x1c3RlclJvbGUuR1ZLLmtpbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc291cmNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxufVxuXG4vKipcbiAqIENsdXN0ZXJSb2xlIGlzIGEgY2x1c3RlciBsZXZlbCwgbG9naWNhbCBncm91cGluZyBvZiBQb2xpY3lSdWxlcyB0aGF0IGNhbiBiZVxuICogcmVmZXJlbmNlZCBhcyBhIHVuaXQgYnkgYSBSb2xlQmluZGluZyBvciBDbHVzdGVyUm9sZUJpbmRpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbHVzdGVyUm9sZSBleHRlbmRzIGJhc2UuUmVzb3VyY2UgaW1wbGVtZW50cyBJQ2x1c3RlclJvbGUsIElSb2xlIHtcblxuICAvKipcbiAgICogSW1wb3J0cyBhIHJvbGUgZnJvbSB0aGUgY2x1c3RlciBhcyBhIHJlZmVyZW5jZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNsdXN0ZXJSb2xlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJQ2x1c3RlclJvbGUge1xuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRDbHVzdGVyUm9sZShzY29wZSwgaWQsIG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgYmFzZS5SZXNvdXJjZS5hcGlPYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlID0gJ2NsdXN0ZXJyb2xlcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWxTZWxlY3RvcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydWxlczogQXJyYXk8Q2x1c3RlclJvbGVQb2xpY3lSdWxlPiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDbHVzdGVyUm9sZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hcGlPYmplY3QgPSBuZXcgazhzLkt1YmVDbHVzdGVyUm9sZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogcHJvcHMubWV0YWRhdGEsXG4gICAgICBydWxlczogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnN5bnRoZXNpemVSdWxlcygpIH0pLFxuICAgICAgYWdncmVnYXRpb25SdWxlOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc3ludGhlc2l6ZUFnZ3JlZ2F0aW9uUnVsZXMoKSB9KSxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBwcm9wcy5ydWxlcyA/PyBbXSkge1xuICAgICAgdGhpcy5hbGxvdyhydWxlLnZlcmJzLCAuLi5ydWxlLmVuZHBvaW50cyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMuYWdncmVnYXRpb25MYWJlbHMgPz8ge30pKSB7XG4gICAgICB0aGlzLmFnZ3JlZ2F0ZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVsZXMgYXNzb2NpYWF0ZWQgd2l0aCB0aGlzIFJvbGUuXG4gICAqIFJldHVybnMgYSBjb3B5LCB1c2UgYGFsbG93YCB0byBhZGQgcnVsZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJ1bGVzKCk6IENsdXN0ZXJSb2xlUG9saWN5UnVsZVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3J1bGVzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcGVybWlzc2lvbiB0byBwZXJmb3JtIGEgbGlzdCBvZiBIVFRQIHZlcmJzIG9uIGEgY29sbGVjdGlvbiBvZlxuICAgKiByZXNvdXJjZXMuXG4gICAqXG4gICAqIEBwYXJhbSBlbmRwb2ludHMgVGhlIGVuZHBvaW50cyhzKSB0byBhcHBseSB0b1xuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL3JlZmVyZW5jZS9hY2Nlc3MtYXV0aG4tYXV0aHovYXV0aG9yaXphdGlvbi8jZGV0ZXJtaW5lLXRoZS1yZXF1ZXN0LXZlcmJcbiAgICovXG4gIHB1YmxpYyBhbGxvdyh2ZXJiczogc3RyaW5nW10sIC4uLmVuZHBvaW50czogSUFwaUVuZHBvaW50W10pOiB2b2lkIHtcbiAgICB0aGlzLl9ydWxlcy5wdXNoKHsgdmVyYnMsIGVuZHBvaW50cyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgXCJjcmVhdGVcIiBwZXJtaXNzaW9uIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gZW5kcG9pbnRzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93Q3JlYXRlKC4uLmVuZHBvaW50czogSUFwaUVuZHBvaW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnY3JlYXRlJ10sIC4uLmVuZHBvaW50cyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwiZ2V0XCIgcGVybWlzc2lvbiBmb3IgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIGVuZHBvaW50cyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd0dldCguLi5lbmRwb2ludHM6IElBcGlFbmRwb2ludFtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvdyhbJ2dldCddLCAuLi5lbmRwb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcImxpc3RcIiBwZXJtaXNzaW9uIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gZW5kcG9pbnRzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93TGlzdCguLi5lbmRwb2ludHM6IElBcGlFbmRwb2ludFtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvdyhbJ2xpc3QnXSwgLi4uZW5kcG9pbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgXCJ3YXRjaFwiIHBlcm1pc3Npb24gZm9yIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSBlbmRwb2ludHMgVGhlIHJlc291cmNlKHMpIHRvIGFwcGx5IHRvXG4gICAqL1xuICBwdWJsaWMgYWxsb3dXYXRjaCguLi5lbmRwb2ludHM6IElBcGlFbmRwb2ludFtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvdyhbJ3dhdGNoJ10sIC4uLmVuZHBvaW50cyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwidXBkYXRlXCIgcGVybWlzc2lvbiBmb3IgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIGVuZHBvaW50cyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd1VwZGF0ZSguLi5lbmRwb2ludHM6IElBcGlFbmRwb2ludFtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvdyhbJ3VwZGF0ZSddLCAuLi5lbmRwb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcInBhdGNoXCIgcGVybWlzc2lvbiBmb3IgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIGVuZHBvaW50cyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd1BhdGNoKC4uLmVuZHBvaW50czogSUFwaUVuZHBvaW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsncGF0Y2gnXSwgLi4uZW5kcG9pbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgXCJkZWxldGVcIiBwZXJtaXNzaW9uIGZvciB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0gZW5kcG9pbnRzIFRoZSByZXNvdXJjZShzKSB0byBhcHBseSB0b1xuICAgKi9cbiAgcHVibGljIGFsbG93RGVsZXRlKC4uLmVuZHBvaW50czogSUFwaUVuZHBvaW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnZGVsZXRlJ10sIC4uLmVuZHBvaW50cyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIFwiZGVsZXRlY29sbGVjdGlvblwiIHBlcm1pc3Npb24gZm9yIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSBlbmRwb2ludHMgVGhlIHJlc291cmNlKHMpIHRvIGFwcGx5IHRvXG4gICAqL1xuICBwdWJsaWMgYWxsb3dEZWxldGVDb2xsZWN0aW9uKC4uLmVuZHBvaW50czogSUFwaUVuZHBvaW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93KFsnZGVsZXRlY29sbGVjdGlvbiddLCAuLi5lbmRwb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcImdldFwiLCBcImxpc3RcIiwgYW5kIFwid2F0Y2hcIiBwZXJtaXNzaW9ucyBmb3IgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIGVuZHBvaW50cyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd1JlYWQoLi4uZW5kcG9pbnRzOiBJQXBpRW5kcG9pbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxsb3coWydnZXQnLCAnbGlzdCcsICd3YXRjaCddLCAuLi5lbmRwb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBcImdldFwiLCBcImxpc3RcIiwgXCJ3YXRjaFwiLCBcImNyZWF0ZVwiLCBcInVwZGF0ZVwiLCBcInBhdGNoXCIsIFwiZGVsZXRlXCIsIGFuZFxuICAgKiBcImRlbGV0ZWNvbGxlY3Rpb25cIiBwZXJtaXNzaW9ucyBmb3IgdGhlIHJlc291cmNlcy5cbiAgICpcbiAgICogQHBhcmFtIGVuZHBvaW50cyBUaGUgcmVzb3VyY2UocykgdG8gYXBwbHkgdG9cbiAgICovXG4gIHB1YmxpYyBhbGxvd1JlYWRXcml0ZSguLi5lbmRwb2ludHM6IElBcGlFbmRwb2ludFtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGxvdyhbJ2dldCcsICdsaXN0JywgJ3dhdGNoJywgJ2NyZWF0ZScsICd1cGRhdGUnLCAncGF0Y2gnLCAnZGVsZXRlJywgJ2RlbGV0ZWNvbGxlY3Rpb24nXSwgLi4uZW5kcG9pbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZ2dyZWdhdGUgcnVsZXMgZnJvbSByb2xlcyBtYXRjaGluZyB0aGlzIGxhYmVsIHNlbGVjdG9yLlxuICAgKi9cbiAgcHVibGljIGFnZ3JlZ2F0ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2xhYmVsU2VsZWN0b3Jba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmVzIHRoZSBydWxlcyBvZiB0aGUgYXJndW1lbnQgQ2x1c3RlclJvbGUgaW50byB0aGlzIENsdXN0ZXJSb2xlXG4gICAqIHVzaW5nIGFnZ3JlZ2F0aW9uIGxhYmVscy5cbiAgICogQHBhcmFtIHJvbFxuICAgKi9cbiAgcHVibGljIGNvbWJpbmUocm9sOiBDbHVzdGVyUm9sZSk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGBjZGs4cy5jbHVzdGVyLXJvbGUvYWdncmVnYXRlLXRvLSR7TmFtZXMudG9MYWJlbFZhbHVlKHRoaXMpfWA7XG4gICAgY29uc3QgdmFsdWUgPSAndHJ1ZSc7XG4gICAgcm9sLm1ldGFkYXRhLmFkZExhYmVsKGtleSwgdmFsdWUpO1xuICAgIHRoaXMuYWdncmVnYXRlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFJvbGVCaW5kaW5nIHRoYXQgYmluZHMgdGhlIHBlcm1pc3Npb25zIGluIHRoaXMgQ2x1c3RlclJvbGVcbiAgICogdG8gYSBsaXN0IG9mIHN1YmplY3RzLCB0aGF0IHdpbGwgb25seSBhcHBseSB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlLlxuICAgKiBAcGFyYW0gbmFtZXNwYWNlIHRoZSBuYW1lc3BhY2UgdG8gbGltaXQgcGVybWlzc2lvbnMgdG8uXG4gICAqIEBwYXJhbSBzdWJqZWN0cyBhIGxpc3Qgb2Ygc3ViamVjdHMgdG8gYmluZCB0b1xuICAgKi9cbiAgcHVibGljIGJpbmRJbk5hbWVzcGFjZShuYW1lc3BhY2U6IHN0cmluZywgLi4uc3ViamVjdHM6IHJiLklTdWJqZWN0W10pOiByYi5Sb2xlQmluZGluZyB7XG4gICAgY29uc3QgYmluZGluZyA9IG5ldyByYi5Sb2xlQmluZGluZyh0aGlzLCBgUm9sZUJpbmRpbmctJHtuYW1lc3BhY2V9YCwge1xuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgfSxcbiAgICAgIHJvbGU6IHRoaXMsXG4gICAgfSk7XG4gICAgYmluZGluZy5hZGRTdWJqZWN0cyguLi5zdWJqZWN0cyk7XG4gICAgcmV0dXJuIGJpbmRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgQ2x1c3RlclJvbGVCaW5kaW5nIHRoYXQgYmluZHMgdGhlIHBlcm1pc3Npb25zIGluIHRoaXNcbiAgICogQ2x1c3RlclJvbGUgdG8gYSBsaXN0IG9mIHN1YmplY3RzLCB3aXRob3V0IG5hbWVzcGFjZSByZXN0cmljdGlvbnMuXG4gICAqIEBwYXJhbSBzdWJqZWN0cyBhIGxpc3Qgb2Ygc3ViamVjdHMgdG8gYmluZCB0b1xuICAgKi9cbiAgcHVibGljIGJpbmQoLi4uc3ViamVjdHM6IHJiLklTdWJqZWN0W10pOiByYi5DbHVzdGVyUm9sZUJpbmRpbmcge1xuICAgIGNvbnN0IGJpbmRpbmcgPSBuZXcgcmIuQ2x1c3RlclJvbGVCaW5kaW5nKHRoaXMsICdDbHVzdGVyUm9sZUJpbmRpbmcnLCB7XG4gICAgICByb2xlOiB0aGlzLFxuICAgIH0pO1xuICAgIGJpbmRpbmcuYWRkU3ViamVjdHMoLi4uc3ViamVjdHMpO1xuICAgIHJldHVybiBiaW5kaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aGVzaXplUnVsZXMoKTogazhzLlBvbGljeVJ1bGVbXSB7XG4gICAgY29uc3QgcnVsZXM6IGs4cy5Qb2xpY3lSdWxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgdGhpcy5fcnVsZXMpIHtcbiAgICAgIGZvciAoY29uc3QgZW5kcG9pbnQgb2YgcnVsZS5lbmRwb2ludHMpIHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2UgPSBlbmRwb2ludC5hc0FwaVJlc291cmNlKCk7XG4gICAgICAgIGNvbnN0IG5vblJlc291cmNlID0gZW5kcG9pbnQuYXNOb25BcGlSZXNvdXJjZSgpO1xuXG4gICAgICAgIGlmIChyZXNvdXJjZSAmJiBub25SZXNvdXJjZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRW5kcG9pbnQgbXVzdCBiZSBlaXRoZXIgcmVzb3VyY2Ugb3Igbm9uIHJlc291cmNlLiBub3QgYm90aC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzb3VyY2UgJiYgIW5vblJlc291cmNlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmRwb2ludCBtdXN0IGJlIGVpdGhlciByZXNvdXJjZSBvciBub24gcmVzb3VyY2UuIG5vdCBuZWl0aGVyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlKSB7XG4gICAgICAgICAgcnVsZXMucHVzaCh7XG4gICAgICAgICAgICBhcGlHcm91cHM6IFtyZXNvdXJjZS5hcGlHcm91cCA9PT0gJ2NvcmUnID8gJycgOiByZXNvdXJjZS5hcGlHcm91cF0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtyZXNvdXJjZS5yZXNvdXJjZVR5cGVdLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lczogcmVzb3VyY2UucmVzb3VyY2VOYW1lID8gW3Jlc291cmNlLnJlc291cmNlTmFtZV0gOiBbXSxcbiAgICAgICAgICAgIHZlcmJzOiBydWxlLnZlcmJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub25SZXNvdXJjZSkge1xuICAgICAgICAgIHJ1bGVzLnB1c2goeyB2ZXJiczogcnVsZS52ZXJicywgbm9uUmVzb3VyY2VVckxzOiBbbm9uUmVzb3VyY2VdIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aGVzaXplQWdncmVnYXRpb25SdWxlcygpOiBrOHMuQWdncmVnYXRpb25SdWxlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fbGFiZWxTZWxlY3RvcikubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsdXN0ZXJSb2xlU2VsZWN0b3JzOiBbeyBtYXRjaExhYmVsczogdGhpcy5fbGFiZWxTZWxlY3RvciB9XSB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,195 @@
1
+ import { ApiObject } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ import * as base from './base';
4
+ import { EnvValue, EnvValueFromSecretOptions } from './container';
5
+ import * as serviceaccount from './service-account';
6
+ /**
7
+ * Common properties for `Secret`.
8
+ */
9
+ export interface CommonSecretProps extends base.ResourceProps {
10
+ /**
11
+ * If set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified).
12
+ * If not set to true, the field can be modified at any time.
13
+ *
14
+ * @default false
15
+ */
16
+ readonly immutable?: boolean;
17
+ }
18
+ /**
19
+ * Options for `Secret`.
20
+ */
21
+ export interface SecretProps extends CommonSecretProps {
22
+ /**
23
+ * stringData allows specifying non-binary secret data in string form. It is
24
+ * provided as a write-only convenience method. All keys and values are merged
25
+ * into the data field on write, overwriting any existing values. It is never
26
+ * output when reading from the API.
27
+ */
28
+ readonly stringData?: {
29
+ [key: string]: string;
30
+ };
31
+ /**
32
+ * Optional type associated with the secret. Used to facilitate programmatic
33
+ * handling of secret data by various controllers.
34
+ *
35
+ * @default undefined - Don't set a type.
36
+ */
37
+ readonly type?: string;
38
+ }
39
+ export interface ISecret extends base.IResource {
40
+ /**
41
+ * Returns EnvValue object from a secret's key.
42
+ * @param key Secret's key
43
+ * @param options Additional EnvValue options
44
+ */
45
+ envValue(key: string, options?: EnvValueFromSecretOptions): EnvValue;
46
+ }
47
+ /**
48
+ * Represents a specific value in JSON secret.
49
+ */
50
+ export interface SecretValue {
51
+ /**
52
+ * The secret
53
+ */
54
+ readonly secret: ISecret;
55
+ /**
56
+ * The JSON key
57
+ */
58
+ readonly key: string;
59
+ }
60
+ /**
61
+ * Kubernetes Secrets let you store and manage sensitive information, such as
62
+ * passwords, OAuth tokens, and ssh keys. Storing confidential information in a
63
+ * Secret is safer and more flexible than putting it verbatim in a Pod
64
+ * definition or in a container image.
65
+ *
66
+ * @see https://kubernetes.io/docs/concepts/configuration/secret
67
+ */
68
+ export declare class Secret extends base.Resource implements ISecret {
69
+ /**
70
+ * Imports a secret from the cluster as a reference.
71
+ */
72
+ static fromSecretName(scope: Construct, id: string, name: string): ISecret;
73
+ /**
74
+ * @see base.Resource.apiObject
75
+ */
76
+ protected readonly apiObject: ApiObject;
77
+ readonly resourceType = "secrets";
78
+ /**
79
+ * Whether or not the secret is immutable.
80
+ */
81
+ readonly immutable: boolean;
82
+ private readonly stringData;
83
+ constructor(scope: Construct, id: string, props?: SecretProps);
84
+ /**
85
+ * Adds a string data field to the secret.
86
+ * @param key Key
87
+ * @param value Value
88
+ */
89
+ addStringData(key: string, value: string): void;
90
+ /**
91
+ * Gets a string data by key or undefined
92
+ * @param key Key
93
+ */
94
+ getStringData(key: string): string | undefined;
95
+ envValue(key: string, options?: EnvValueFromSecretOptions): EnvValue;
96
+ }
97
+ /**
98
+ * Options for `BasicAuthSecret`.
99
+ */
100
+ export interface BasicAuthSecretProps extends CommonSecretProps {
101
+ /**
102
+ * The user name for authentication
103
+ */
104
+ readonly username: string;
105
+ /**
106
+ * The password or token for authentication
107
+ */
108
+ readonly password: string;
109
+ }
110
+ /**
111
+ * Create a secret for basic authentication.
112
+ *
113
+ * @see https://kubernetes.io/docs/concepts/configuration/secret/#basic-authentication-secret
114
+ */
115
+ export declare class BasicAuthSecret extends Secret {
116
+ constructor(scope: Construct, id: string, props: BasicAuthSecretProps);
117
+ }
118
+ /**
119
+ * Options for `SshAuthSecret`.
120
+ */
121
+ export interface SshAuthSecretProps extends CommonSecretProps {
122
+ /**
123
+ * The SSH private key to use
124
+ */
125
+ readonly sshPrivateKey: string;
126
+ }
127
+ /**
128
+ * Create a secret for ssh authentication.
129
+ *
130
+ * @see https://kubernetes.io/docs/concepts/configuration/secret/#ssh-authentication-secrets
131
+ */
132
+ export declare class SshAuthSecret extends Secret {
133
+ constructor(scope: Construct, id: string, props: SshAuthSecretProps);
134
+ }
135
+ /**
136
+ * Options for `ServiceAccountTokenSecret`.
137
+ */
138
+ export interface ServiceAccountTokenSecretProps extends CommonSecretProps {
139
+ /**
140
+ * The service account to store a secret for
141
+ */
142
+ readonly serviceAccount: serviceaccount.IServiceAccount;
143
+ }
144
+ /**
145
+ * Create a secret for a service account token.
146
+ *
147
+ * @see https://kubernetes.io/docs/concepts/configuration/secret/#service-account-token-secrets
148
+ */
149
+ export declare class ServiceAccountTokenSecret extends Secret {
150
+ constructor(scope: Construct, id: string, props: ServiceAccountTokenSecretProps);
151
+ }
152
+ /**
153
+ * Options for `TlsSecret`.
154
+ */
155
+ export interface TlsSecretProps extends CommonSecretProps {
156
+ /**
157
+ * The TLS cert
158
+ */
159
+ readonly tlsCert: string;
160
+ /**
161
+ * The TLS key
162
+ */
163
+ readonly tlsKey: string;
164
+ }
165
+ /**
166
+ * Create a secret for storing a TLS certificate and its associated key.
167
+ *
168
+ * @see https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets
169
+ */
170
+ export declare class TlsSecret extends Secret {
171
+ constructor(scope: Construct, id: string, props: TlsSecretProps);
172
+ }
173
+ /**
174
+ * Options for `DockerConfigSecret`.
175
+ */
176
+ export interface DockerConfigSecretProps extends CommonSecretProps {
177
+ /**
178
+ * JSON content to provide for the `~/.docker/config.json` file. This will
179
+ * be stringified and inserted as stringData.
180
+ *
181
+ * @see https://docs.docker.com/engine/reference/commandline/cli/#sample-configuration-file
182
+ */
183
+ readonly data: {
184
+ [key: string]: any;
185
+ };
186
+ }
187
+ /**
188
+ * Create a secret for storing credentials for accessing a container image
189
+ * registry.
190
+ *
191
+ * @see https://kubernetes.io/docs/concepts/configuration/secret/#docker-config-secrets
192
+ */
193
+ export declare class DockerConfigSecret extends Secret {
194
+ constructor(scope: Construct, id: string, props: DockerConfigSecretProps);
195
+ }