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/pvc.js ADDED
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PersistentVolumeMode = exports.PersistentVolumeAccessMode = exports.PersistentVolumeClaim = 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
+ class ImportedPersistentVolumeClaim extends constructs_1.Construct {
11
+ constructor(scope, id, name) {
12
+ super(scope, id);
13
+ this.resourceType = 'persistentvolumeclaims';
14
+ this._name = name;
15
+ }
16
+ get name() {
17
+ return this._name;
18
+ }
19
+ get apiVersion() {
20
+ return k8s.KubePersistentVolumeClaim.GVK.apiVersion;
21
+ }
22
+ get apiGroup() {
23
+ return '';
24
+ }
25
+ get kind() {
26
+ return k8s.KubePersistentVolumeClaim.GVK.kind;
27
+ }
28
+ get resourceName() {
29
+ return this.name;
30
+ }
31
+ }
32
+ /**
33
+ * A PersistentVolumeClaim (PVC) is a request for storage by a user.
34
+ * It is similar to a Pod. Pods consume node resources and PVCs consume PV resources.
35
+ * Pods can request specific levels of resources (CPU and Memory).
36
+ * Claims can request specific size and access modes
37
+ */
38
+ class PersistentVolumeClaim extends base.Resource {
39
+ constructor(scope, id, props = {}) {
40
+ super(scope, id);
41
+ this.resourceType = 'persistentvolumeclaims';
42
+ this.storage = props.storage;
43
+ this.volumeMode = props.volumeMode ?? PersistentVolumeMode.FILE_SYSTEM;
44
+ this.storageClassName = props.storageClassName;
45
+ this._accessModes = props.accessModes;
46
+ if (props.volume) {
47
+ this.bind(props.volume);
48
+ }
49
+ this.apiObject = new k8s.KubePersistentVolumeClaim(this, 'Resource', {
50
+ metadata: props.metadata,
51
+ spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
52
+ });
53
+ }
54
+ /**
55
+ * Imports a pvc from the cluster as a reference.
56
+ */
57
+ static fromClaimName(scope, id, claimName) {
58
+ return new ImportedPersistentVolumeClaim(scope, id, claimName);
59
+ }
60
+ /**
61
+ * Access modes requirement of this claim.
62
+ */
63
+ get accessModes() {
64
+ return this._accessModes ? [...this._accessModes] : undefined;
65
+ }
66
+ /**
67
+ * PV this claim is bound to. Undefined means the claim is not bound
68
+ * to any specific volume.
69
+ */
70
+ get volume() {
71
+ return this._volume;
72
+ }
73
+ /**
74
+ * Bind a claim to a specific volume.
75
+ * Note that you must also bind the volume to the claim.
76
+ *
77
+ * @see https://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding
78
+ *
79
+ * @param vol The PV to bind to.
80
+ */
81
+ bind(vol) {
82
+ if (this._volume && this._volume.name !== vol.name) {
83
+ throw new Error(`Cannot bind claim '${this.name}' to volume '${vol.name}' since it is already bound to volume '${this._volume.name}'`);
84
+ }
85
+ this._volume = vol;
86
+ }
87
+ /**
88
+ * @internal
89
+ */
90
+ _toKube() {
91
+ const storage = this.storage ? k8s.Quantity.fromString(this.storage.toGibibytes() + 'Gi') : undefined;
92
+ return {
93
+ volumeName: this.volume ? this.volume.name : undefined,
94
+ accessModes: this.accessModes?.map(a => a.toString()),
95
+ resources: storage ? { requests: { storage } } : undefined,
96
+ volumeMode: this.volumeMode,
97
+ storageClassName: this.storageClassName,
98
+ };
99
+ }
100
+ }
101
+ exports.PersistentVolumeClaim = PersistentVolumeClaim;
102
+ _a = JSII_RTTI_SYMBOL_1;
103
+ PersistentVolumeClaim[_a] = { fqn: "cdk8s-plus-31.PersistentVolumeClaim", version: "2.0.0" };
104
+ /**
105
+ * Access Modes.
106
+ */
107
+ var PersistentVolumeAccessMode;
108
+ (function (PersistentVolumeAccessMode) {
109
+ /**
110
+ * The volume can be mounted as read-write by a single node.
111
+ * ReadWriteOnce access mode still can allow multiple pods to access
112
+ * the volume when the pods are running on the same node.
113
+ */
114
+ PersistentVolumeAccessMode["READ_WRITE_ONCE"] = "ReadWriteOnce";
115
+ /**
116
+ * The volume can be mounted as read-only by many nodes.
117
+ */
118
+ PersistentVolumeAccessMode["READ_ONLY_MANY"] = "ReadOnlyMany";
119
+ /**
120
+ * The volume can be mounted as read-write by many nodes.
121
+ */
122
+ PersistentVolumeAccessMode["READ_WRITE_MANY"] = "ReadWriteMany";
123
+ /**
124
+ * The volume can be mounted as read-write by a single Pod.
125
+ * Use ReadWriteOncePod access mode if you want to ensure that
126
+ * only one pod across whole cluster can read that PVC or write to it.
127
+ * This is only supported for CSI volumes and Kubernetes version 1.22+.
128
+ */
129
+ PersistentVolumeAccessMode["READ_WRITE_ONCE_POD"] = "ReadWriteOncePod";
130
+ })(PersistentVolumeAccessMode = exports.PersistentVolumeAccessMode || (exports.PersistentVolumeAccessMode = {}));
131
+ /**
132
+ * Volume Modes.
133
+ */
134
+ var PersistentVolumeMode;
135
+ (function (PersistentVolumeMode) {
136
+ /**
137
+ * Volume is ounted into Pods into a directory.
138
+ * If the volume is backed by a block device and the device is empty,
139
+ * Kubernetes creates a filesystem on the device before mounting it
140
+ * for the first time.
141
+ */
142
+ PersistentVolumeMode["FILE_SYSTEM"] = "Filesystem";
143
+ /**
144
+ * Use a volume as a raw block device. Such volume is presented into a Pod as a block device,
145
+ * without any filesystem on it. This mode is useful to provide a Pod the fastest possible way
146
+ * to access a volume, without any filesystem layer between the Pod
147
+ * and the volume. On the other hand, the application running in
148
+ * the Pod must know how to handle a raw block device
149
+ */
150
+ PersistentVolumeMode["BLOCK"] = "Block";
151
+ })(PersistentVolumeMode = exports.PersistentVolumeMode || (exports.PersistentVolumeMode = {}));
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHZjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3B2Yy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUE4QztBQUM5QywyQ0FBdUM7QUFDdkMsK0JBQStCO0FBQy9CLHFDQUFxQztBQXNFckMsTUFBTSw2QkFBOEIsU0FBUSxzQkFBUztJQU1uRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLElBQVk7UUFDcEQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhILGlCQUFZLEdBQUcsd0JBQXdCLENBQUM7UUFJdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sR0FBRyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FFRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxJQUFJLENBQUMsUUFBUTtJQW1DdEQsWUFBbUIsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBb0MsRUFBRztRQUN0RixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBdEJILGlCQUFZLEdBQUcsd0JBQXdCLENBQUM7UUF3QnRELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUss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MUMsQ0FBQyxFQTNCVywwQkFBMEIsR0FBMUIsa0NBQTBCLEtBQTFCLGtDQUEwQixRQTJCckM7QUFFRDs7R0FFRztBQUNILElBQVksb0JBa0JYO0FBbEJELFdBQVksb0JBQW9CO0lBRTlCOzs7OztPQUtHO0lBQ0gsa0RBQTBCLENBQUE7SUFFMUI7Ozs7OztPQU1HO0lBQ0gsdUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBbEJXLG9CQUFvQixHQUFwQiw0QkFBb0IsS0FBcEIsNEJBQW9CLFFBa0IvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpemUsIEFwaU9iamVjdCwgTGF6eSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgYmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0ICogYXMgcHYgZnJvbSAnLi9wdic7XG5cbi8qKlxuICogQ29udHJhY3Qgb2YgYSBgUGVyc2lzdGVudFZvbHVtZUNsYWltYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGVyc2lzdGVudFZvbHVtZUNsYWltIGV4dGVuZHMgYmFzZS5JUmVzb3VyY2Uge1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYFBlcnNpc3RlbnRWb2x1bWVDbGFpbWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVudFZvbHVtZUNsYWltUHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge1xuXG4gIC8qKlxuICAgKiBDb250YWlucyB0aGUgYWNjZXNzIG1vZGVzIHRoZSB2b2x1bWUgc2hvdWxkIHN1cHBvcnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc3RvcmFnZS9wZXJzaXN0ZW50LXZvbHVtZXMjYWNjZXNzLW1vZGVzLTFcbiAgICogQGRlZmF1bHQgLSBObyBhY2Nlc3MgbW9kZXMgcmVxdWlyZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NNb2Rlcz86IFBlcnNpc3RlbnRWb2x1bWVBY2Nlc3NNb2RlW107XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gc3RvcmFnZSBzaXplIHRoZSB2b2x1bWUgc2hvdWxkIGhhdmUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc3RvcmFnZS9wZXJzaXN0ZW50LXZvbHVtZXMjcmVzb3VyY2VzXG4gICAqIEBkZWZhdWx0IC0gTm8gc3RvcmFnZSByZXF1aXJlbWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBTaXplO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTdG9yYWdlQ2xhc3MgcmVxdWlyZWQgYnkgdGhlIGNsYWltLlxuICAgKiBXaGVuIHRoaXMgcHJvcGVydHkgaXMgbm90IHNldCwgdGhlIGJlaGF2aW9yIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIC0gSWYgdGhlIGFkbWlzc2lvbiBwbHVnaW4gaXMgdHVybmVkIG9uLCB0aGUgc3RvcmFnZSBjbGFzcyBtYXJrZWQgYXMgZGVmYXVsdCB3aWxsIGJlIHVzZWQuXG4gICAqIC0gSWYgdGhlIGFkbWlzc2lvbiBwbHVnaW4gaXMgdHVybmVkIG9mZiwgdGhlIHB2YyBjYW4gb25seSBiZSBib3VuZCB0byB2b2x1bWVzIHdpdGhvdXQgYSBzdG9yYWdlIGNsYXNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL3N0b3JhZ2UvcGVyc2lzdGVudC12b2x1bWVzI2NsYXNzLTFcbiAgICogQGRlZmF1bHQgLSBOb3Qgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUNsYXNzTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGF0IHR5cGUgb2Ygdm9sdW1lIGlzIHJlcXVpcmVkIGJ5IHRoZSBjbGFpbS5cbiAgICpcbiAgICogQGRlZmF1bHQgVm9sdW1lTW9kZS5GSUxFX1NZU1RFTVxuICAgKi9cbiAgcmVhZG9ubHkgdm9sdW1lTW9kZT86IFBlcnNpc3RlbnRWb2x1bWVNb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgUGVyc2lzdGVudFZvbHVtZSBiYWNraW5nIHRoaXMgY2xhaW0uXG4gICAqXG4gICAqIFRoZSBjb250cm9sIHBsYW5lIHN0aWxsIGNoZWNrcyB0aGF0IHN0b3JhZ2UgY2xhc3MsIGFjY2VzcyBtb2RlcyxcbiAgICogYW5kIHJlcXVlc3RlZCBzdG9yYWdlIHNpemUgb24gdGhlIHZvbHVtZSBhcmUgdmFsaWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBpbiBvcmRlciB0byBndWFyYW50ZWUgYSBwcm9wZXIgYmluZGluZywgdGhlIHZvbHVtZSBzaG91bGRcbiAgICogYWxzbyBkZWZpbmUgYSBgY2xhaW1SZWZgIHJlZmVycmluZyB0byB0aGlzIGNsYWltLiBPdGhlcndpc2UsIHRoZSB2b2x1bWUgbWF5IGJlXG4gICAqIGNsYWltZWQgYmUgb3RoZXIgcHZjJ3MgYmVmb3JlIGl0IGdldHMgYSBjaGFuY2UgdG8gYmluZCB0byB0aGlzIG9uZS5cbiAgICpcbiAgICogSWYgdGhlIHZvbHVtZSBpcyBtYW5hZ2VkIChpLmUgbm90IGltcG9ydGVkKSwgeW91IGNhbiB1c2UgYHB2LmNsYWltKClgIHRvIGVhc2lseVxuICAgKiBjcmVhdGUgYSBiaS1kaXJlY3Rpb25hbCBib3VuZGVkIGNsYWltLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL3N0b3JhZ2UvcGVyc2lzdGVudC12b2x1bWVzLyNiaW5kaW5nLlxuICAgKiBAZGVmYXVsdCAtIE5vIHNwZWNpZmljIHZvbHVtZSBiaW5kaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgdm9sdW1lPzogcHYuSVBlcnNpc3RlbnRWb2x1bWU7XG5cbn1cblxuY2xhc3MgSW1wb3J0ZWRQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0gZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUGVyc2lzdGVudFZvbHVtZUNsYWltIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZSA9ICdwZXJzaXN0ZW50dm9sdW1lY2xhaW1zJztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gazhzLkt1YmVQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0uR1ZLLmFwaVZlcnNpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaUdyb3VwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIGdldCBraW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGs4cy5LdWJlUGVyc2lzdGVudFZvbHVtZUNsYWltLkdWSy5raW5kO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNvdXJjZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbn1cblxuLyoqXG4gKiBBIFBlcnNpc3RlbnRWb2x1bWVDbGFpbSAoUFZDKSBpcyBhIHJlcXVlc3QgZm9yIHN0b3JhZ2UgYnkgYSB1c2VyLlxuICogSXQgaXMgc2ltaWxhciB0byBhIFBvZC4gUG9kcyBjb25zdW1lIG5vZGUgcmVzb3VyY2VzIGFuZCBQVkNzIGNvbnN1bWUgUFYgcmVzb3VyY2VzLlxuICogUG9kcyBjYW4gcmVxdWVzdCBzcGVjaWZpYyBsZXZlbHMgb2YgcmVzb3VyY2VzIChDUFUgYW5kIE1lbW9yeSkuXG4gKiBDbGFpbXMgY2FuIHJlcXVlc3Qgc3BlY2lmaWMgc2l6ZSBhbmQgYWNjZXNzIG1vZGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0gZXh0ZW5kcyBiYXNlLlJlc291cmNlIGltcGxlbWVudHMgSVBlcnNpc3RlbnRWb2x1bWVDbGFpbSB7XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYSBwdmMgZnJvbSB0aGUgY2x1c3RlciBhcyBhIHJlZmVyZW5jZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNsYWltTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjbGFpbU5hbWU6IHN0cmluZyk6IElQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0ge1xuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0oc2NvcGUsIGlkLCBjbGFpbU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgYmFzZS5SZXNvdXJjZS5hcGlPYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlPYmplY3Q6IEFwaU9iamVjdDtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlID0gJ3BlcnNpc3RlbnR2b2x1bWVjbGFpbXMnO1xuXG4gIC8qKlxuICAgKiBTdG9yYWdlIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhaW0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RvcmFnZT86IFNpemU7XG5cbiAgLyoqXG4gICAqIFZvbHVtZSBtb2RlIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhaW0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdm9sdW1lTW9kZTogUGVyc2lzdGVudFZvbHVtZU1vZGU7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UgY2xhc3MgcmVxdWlybWVudCBvZiB0aGlzIGNsYWltLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0b3JhZ2VDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWNjZXNzTW9kZXM/OiBQZXJzaXN0ZW50Vm9sdW1lQWNjZXNzTW9kZVtdO1xuXG4gIHByaXZhdGUgX3ZvbHVtZT86IHB2LklQZXJzaXN0ZW50Vm9sdW1lO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGVyc2lzdGVudFZvbHVtZUNsYWltUHJvcHMgPSB7IH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zdG9yYWdlID0gcHJvcHMuc3RvcmFnZTtcbiAgICB0aGlzLnZvbHVtZU1vZGUgPSBwcm9wcy52b2x1bWVNb2RlID8/IFBlcnNpc3RlbnRWb2x1bWVNb2RlLkZJTEVfU1lTVEVNO1xuICAgIHRoaXMuc3RvcmFnZUNsYXNzTmFtZSA9IHByb3BzLnN0b3JhZ2VDbGFzc05hbWU7XG4gICAgdGhpcy5fYWNjZXNzTW9kZXMgPSBwcm9wcy5hY2Nlc3NNb2RlcztcblxuICAgIGlmIChwcm9wcy52b2x1bWUpIHtcbiAgICAgIHRoaXMuYmluZChwcm9wcy52b2x1bWUpO1xuICAgIH1cblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlUGVyc2lzdGVudFZvbHVtZUNsYWltKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG1ldGFkYXRhOiBwcm9wcy5tZXRhZGF0YSxcbiAgICAgIHNwZWM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5fdG9LdWJlKCkgfSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXNzIG1vZGVzIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhaW0uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFjY2Vzc01vZGVzKCk6IFBlcnNpc3RlbnRWb2x1bWVBY2Nlc3NNb2RlW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9hY2Nlc3NNb2RlcyA/IFsuLi50aGlzLl9hY2Nlc3NNb2Rlc10gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUFYgdGhpcyBjbGFpbSBpcyBib3VuZCB0by4gVW5kZWZpbmVkIG1lYW5zIHRoZSBjbGFpbSBpcyBub3QgYm91bmRcbiAgICogdG8gYW55IHNwZWNpZmljIHZvbHVtZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdm9sdW1lKCk6IHB2LklQZXJzaXN0ZW50Vm9sdW1lIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdm9sdW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgYSBjbGFpbSB0byBhIHNwZWNpZmljIHZvbHVtZS5cbiAgICogTm90ZSB0aGF0IHlvdSBtdXN0IGFsc28gYmluZCB0aGUgdm9sdW1lIHRvIHRoZSBjbGFpbS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9zdG9yYWdlL3BlcnNpc3RlbnQtdm9sdW1lcy8jYmluZGluZ1xuICAgKlxuICAgKiBAcGFyYW0gdm9sIFRoZSBQViB0byBiaW5kIHRvLlxuICAgKi9cbiAgcHVibGljIGJpbmQodm9sOiBwdi5JUGVyc2lzdGVudFZvbHVtZSkge1xuICAgIGlmICh0aGlzLl92b2x1bWUgJiYgdGhpcy5fdm9sdW1lLm5hbWUgIT09IHZvbC5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBiaW5kIGNsYWltICcke3RoaXMubmFtZX0nIHRvIHZvbHVtZSAnJHt2b2wubmFtZX0nIHNpbmNlIGl0IGlzIGFscmVhZHkgYm91bmQgdG8gdm9sdW1lICcke3RoaXMuX3ZvbHVtZS5uYW1lfSdgKTtcbiAgICB9XG4gICAgdGhpcy5fdm9sdW1lID0gdm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0t1YmUoKTogazhzLlBlcnNpc3RlbnRWb2x1bWVDbGFpbVNwZWMge1xuICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UgPyBrOHMuUXVhbnRpdHkuZnJvbVN0cmluZyh0aGlzLnN0b3JhZ2UudG9HaWJpYnl0ZXMoKSArICdHaScpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICB2b2x1bWVOYW1lOiB0aGlzLnZvbHVtZSA/IHRoaXMudm9sdW1lLm5hbWUgOiB1bmRlZmluZWQsXG4gICAgICBhY2Nlc3NNb2RlczogdGhpcy5hY2Nlc3NNb2Rlcz8ubWFwKGEgPT4gYS50b1N0cmluZygpKSxcbiAgICAgIHJlc291cmNlczogc3RvcmFnZSA/IHsgcmVxdWVzdHM6IHsgc3RvcmFnZSB9IH0gOiB1bmRlZmluZWQsXG4gICAgICB2b2x1bWVNb2RlOiB0aGlzLnZvbHVtZU1vZGUsXG4gICAgICBzdG9yYWdlQ2xhc3NOYW1lOiB0aGlzLnN0b3JhZ2VDbGFzc05hbWUsXG4gICAgfTtcbiAgfVxuXG59XG5cbi8qKlxuICogQWNjZXNzIE1vZGVzLlxuICovXG5leHBvcnQgZW51bSBQZXJzaXN0ZW50Vm9sdW1lQWNjZXNzTW9kZSB7XG5cbiAgLyoqXG4gICAqIFRoZSB2b2x1bWUgY2FuIGJlIG1vdW50ZWQgYXMgcmVhZC13cml0ZSBieSBhIHNpbmdsZSBub2RlLlxuICAgKiBSZWFkV3JpdGVPbmNlIGFjY2VzcyBtb2RlIHN0aWxsIGNhbiBhbGxvdyBtdWx0aXBsZSBwb2RzIHRvIGFjY2Vzc1xuICAgKiB0aGUgdm9sdW1lIHdoZW4gdGhlIHBvZHMgYXJlIHJ1bm5pbmcgb24gdGhlIHNhbWUgbm9kZS5cbiAgICovXG4gIFJFQURfV1JJVEVfT05DRSA9ICdSZWFkV3JpdGVPbmNlJyxcblxuICAvKipcbiAgICogVGhlIHZvbHVtZSBjYW4gYmUgbW91bnRlZCBhcyByZWFkLW9ubHkgYnkgbWFueSBub2Rlcy5cbiAgICovXG4gIFJFQURfT05MWV9NQU5ZID0gJ1JlYWRPbmx5TWFueScsXG5cbiAgLyoqXG4gICAqIFRoZSB2b2x1bWUgY2FuIGJlIG1vdW50ZWQgYXMgcmVhZC13cml0ZSBieSBtYW55IG5vZGVzLlxuICAgKi9cbiAgUkVBRF9XUklURV9NQU5ZID0gJ1JlYWRXcml0ZU1hbnknLFxuXG4gIC8qKlxuICAgKiBUaGUgdm9sdW1lIGNhbiBiZSBtb3VudGVkIGFzIHJlYWQtd3JpdGUgYnkgYSBzaW5nbGUgUG9kLlxuICAgKiBVc2UgUmVhZFdyaXRlT25jZVBvZCBhY2Nlc3MgbW9kZSBpZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdFxuICAgKiBvbmx5IG9uZSBwb2QgYWNyb3NzIHdob2xlIGNsdXN0ZXIgY2FuIHJlYWQgdGhhdCBQVkMgb3Igd3JpdGUgdG8gaXQuXG4gICAqIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIENTSSB2b2x1bWVzIGFuZCBLdWJlcm5ldGVzIHZlcnNpb24gMS4yMisuXG4gICAqL1xuICBSRUFEX1dSSVRFX09OQ0VfUE9EID0gJ1JlYWRXcml0ZU9uY2VQb2QnXG5cbn1cblxuLyoqXG4gKiBWb2x1bWUgTW9kZXMuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcnNpc3RlbnRWb2x1bWVNb2RlIHtcblxuICAvKipcbiAgICogVm9sdW1lIGlzIG91bnRlZCBpbnRvIFBvZHMgaW50byBhIGRpcmVjdG9yeS5cbiAgICogSWYgdGhlIHZvbHVtZSBpcyBiYWNrZWQgYnkgYSBibG9jayBkZXZpY2UgYW5kIHRoZSBkZXZpY2UgaXMgZW1wdHksXG4gICAqIEt1YmVybmV0ZXMgY3JlYXRlcyBhIGZpbGVzeXN0ZW0gb24gdGhlIGRldmljZSBiZWZvcmUgbW91bnRpbmcgaXRcbiAgICogZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKi9cbiAgRklMRV9TWVNURU0gPSAnRmlsZXN5c3RlbScsXG5cbiAgLyoqXG4gICAqIFVzZSBhIHZvbHVtZSBhcyBhIHJhdyBibG9jayBkZXZpY2UuIFN1Y2ggdm9sdW1lIGlzIHByZXNlbnRlZCBpbnRvIGEgUG9kIGFzIGEgYmxvY2sgZGV2aWNlLFxuICAgKiB3aXRob3V0IGFueSBmaWxlc3lzdGVtIG9uIGl0LiBUaGlzIG1vZGUgaXMgdXNlZnVsIHRvIHByb3ZpZGUgYSBQb2QgdGhlIGZhc3Rlc3QgcG9zc2libGUgd2F5XG4gICAqIHRvIGFjY2VzcyBhIHZvbHVtZSwgd2l0aG91dCBhbnkgZmlsZXN5c3RlbSBsYXllciBiZXR3ZWVuIHRoZSBQb2RcbiAgICogYW5kIHRoZSB2b2x1bWUuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgYXBwbGljYXRpb24gcnVubmluZyBpblxuICAgKiB0aGUgUG9kIG11c3Qga25vdyBob3cgdG8gaGFuZGxlIGEgcmF3IGJsb2NrIGRldmljZVxuICAgKi9cbiAgQkxPQ0sgPSAnQmxvY2snXG59XG4iXX0=
@@ -0,0 +1,138 @@
1
+ import { ApiObject } from 'cdk8s';
2
+ import { Construct, IConstruct } from 'constructs';
3
+ import { Resource, ResourceProps } from './base';
4
+ import * as role from './role';
5
+ /**
6
+ * Subject contains a reference to the object or user identities a role binding
7
+ * applies to. This can either hold a direct API object reference, or a value
8
+ * for non-objects such as user and group names.
9
+ */
10
+ export interface SubjectConfiguration {
11
+ /**
12
+ * APIGroup holds the API group of the referenced subject. Defaults to "" for
13
+ * ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User
14
+ * and Group subjects.
15
+ */
16
+ readonly apiGroup?: string;
17
+ /**
18
+ * Kind of object being referenced. Values defined by this API group are
19
+ * "User", "Group", and "ServiceAccount". If the Authorizer does not
20
+ * recognized the kind value, the Authorizer should report an error.
21
+ */
22
+ readonly kind: string;
23
+ /**
24
+ * Name of the object being referenced.
25
+ */
26
+ readonly name: string;
27
+ /**
28
+ * Namespace of the referenced object. If the object kind is non-namespace,
29
+ * such as "User" or "Group", and this value is not empty the Authorizer
30
+ * should report an error.
31
+ */
32
+ readonly namespace?: string;
33
+ }
34
+ /**
35
+ * Represents an object that can be used as a role binding subject.
36
+ */
37
+ export interface ISubject extends IConstruct {
38
+ /**
39
+ * Return the subject configuration.
40
+ */
41
+ toSubjectConfiguration(): SubjectConfiguration;
42
+ }
43
+ /**
44
+ * Properties for `RoleBinding`.
45
+ */
46
+ export interface RoleBindingProps extends ResourceProps {
47
+ /**
48
+ * The role to bind to. A RoleBinding can reference a Role or a ClusterRole.
49
+ */
50
+ readonly role: role.IRole;
51
+ }
52
+ /**
53
+ * A RoleBinding grants permissions within a specific namespace to a user or
54
+ * set of users.
55
+ */
56
+ export declare class RoleBinding extends Resource {
57
+ /**
58
+ * @see base.Resource.apiObject
59
+ */
60
+ protected readonly apiObject: ApiObject;
61
+ readonly resourceType = "rolebindings";
62
+ readonly role: role.IRole;
63
+ private readonly _subjects;
64
+ constructor(scope: Construct, id: string, props: RoleBindingProps);
65
+ /**
66
+ * Adds a subject to the role.
67
+ * @param subjects The subjects to add
68
+ */
69
+ addSubjects(...subjects: ISubject[]): void;
70
+ get subjects(): ISubject[];
71
+ private synthesizeRoleRef;
72
+ private synthesizeSubjects;
73
+ }
74
+ /**
75
+ * Properties for `ClusterRoleBinding`.
76
+ */
77
+ export interface ClusterRoleBindingProps extends ResourceProps {
78
+ /**
79
+ * The role to bind to.
80
+ */
81
+ readonly role: role.IClusterRole;
82
+ }
83
+ /**
84
+ * A ClusterRoleBinding grants permissions cluster-wide to a user or
85
+ * set of users.
86
+ */
87
+ export declare class ClusterRoleBinding extends Resource {
88
+ /**
89
+ * @see base.Resource.apiObject
90
+ */
91
+ protected readonly apiObject: ApiObject;
92
+ readonly resourceType = "clusterrolebindings";
93
+ readonly role: role.IClusterRole;
94
+ private readonly _subjects;
95
+ constructor(scope: Construct, id: string, props: ClusterRoleBindingProps);
96
+ /**
97
+ * Adds a subject to the role.
98
+ * @param subjects The subjects to add
99
+ */
100
+ addSubjects(...subjects: ISubject[]): void;
101
+ get subjects(): ISubject[];
102
+ private synthesizeRoleRef;
103
+ private synthesizeSubjects;
104
+ }
105
+ /**
106
+ * Represents a user.
107
+ */
108
+ export declare class User extends Construct implements ISubject {
109
+ /**
110
+ * Reference a user in the cluster by name.
111
+ */
112
+ static fromName(scope: Construct, id: string, name: string): User;
113
+ readonly apiGroup: string | undefined;
114
+ readonly kind: string;
115
+ readonly name: string;
116
+ private constructor();
117
+ /**
118
+ * @see ISubect.toSubjectConfiguration()
119
+ */
120
+ toSubjectConfiguration(): SubjectConfiguration;
121
+ }
122
+ /**
123
+ * Represents a group.
124
+ */
125
+ export declare class Group extends Construct implements ISubject {
126
+ /**
127
+ * Reference a group by name.
128
+ */
129
+ static fromName(scope: Construct, id: string, name: string): Group;
130
+ readonly apiGroup: string | undefined;
131
+ readonly kind: string;
132
+ readonly name: string;
133
+ private constructor();
134
+ /**
135
+ * @see ISubect.toSubjectConfiguration()
136
+ */
137
+ toSubjectConfiguration(): SubjectConfiguration;
138
+ }
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var _a, _b, _c, _d;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Group = exports.User = exports.ClusterRoleBinding = exports.RoleBinding = 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_1 = require("./base");
9
+ const k8s = require("./imports/k8s");
10
+ const utils_1 = require("./utils");
11
+ /**
12
+ * A RoleBinding grants permissions within a specific namespace to a user or
13
+ * set of users.
14
+ */
15
+ class RoleBinding extends base_1.Resource {
16
+ constructor(scope, id, props) {
17
+ super(scope, id);
18
+ this.resourceType = 'rolebindings';
19
+ this.role = props.role;
20
+ this._subjects = new Array();
21
+ this.apiObject = new k8s.KubeRoleBinding(this, 'Resource', {
22
+ metadata: props.metadata,
23
+ subjects: cdk8s_1.Lazy.any({ produce: () => this.synthesizeSubjects() }),
24
+ roleRef: cdk8s_1.Lazy.any({ produce: () => this.synthesizeRoleRef() }),
25
+ });
26
+ }
27
+ /**
28
+ * Adds a subject to the role.
29
+ * @param subjects The subjects to add
30
+ */
31
+ addSubjects(...subjects) {
32
+ for (const subject of subjects) {
33
+ this._subjects.push(subject);
34
+ }
35
+ }
36
+ get subjects() {
37
+ return [...this._subjects];
38
+ }
39
+ synthesizeRoleRef() {
40
+ return {
41
+ apiGroup: this.role.apiGroup,
42
+ kind: this.role.kind,
43
+ name: this.role.name,
44
+ };
45
+ }
46
+ synthesizeSubjects() {
47
+ return this._subjects.map(subject => subject.toSubjectConfiguration()).map((subject) => utils_1.filterUndefined({
48
+ apiGroup: subject.apiGroup === 'core' ? '' : subject.apiGroup,
49
+ kind: subject.kind,
50
+ name: subject.name,
51
+ namespace: subject.namespace,
52
+ }));
53
+ }
54
+ }
55
+ exports.RoleBinding = RoleBinding;
56
+ _a = JSII_RTTI_SYMBOL_1;
57
+ RoleBinding[_a] = { fqn: "cdk8s-plus-31.RoleBinding", version: "2.0.0" };
58
+ /**
59
+ * A ClusterRoleBinding grants permissions cluster-wide to a user or
60
+ * set of users.
61
+ */
62
+ class ClusterRoleBinding extends base_1.Resource {
63
+ constructor(scope, id, props) {
64
+ super(scope, id);
65
+ this.resourceType = 'clusterrolebindings';
66
+ this.role = props.role;
67
+ this._subjects = new Array();
68
+ this.apiObject = new k8s.KubeClusterRoleBinding(this, 'Resource', {
69
+ metadata: props.metadata,
70
+ subjects: cdk8s_1.Lazy.any({ produce: () => this.synthesizeSubjects() }),
71
+ roleRef: cdk8s_1.Lazy.any({ produce: () => this.synthesizeRoleRef() }),
72
+ });
73
+ }
74
+ /**
75
+ * Adds a subject to the role.
76
+ * @param subjects The subjects to add
77
+ */
78
+ addSubjects(...subjects) {
79
+ for (const subject of subjects) {
80
+ this._subjects.push(subject);
81
+ }
82
+ }
83
+ get subjects() {
84
+ return [...this._subjects];
85
+ }
86
+ synthesizeRoleRef() {
87
+ return {
88
+ apiGroup: this.role.apiGroup,
89
+ kind: this.role.kind,
90
+ name: this.role.name,
91
+ };
92
+ }
93
+ synthesizeSubjects() {
94
+ return this._subjects.map(subject => subject.toSubjectConfiguration()).map((subject) => utils_1.filterUndefined({
95
+ apiGroup: subject.apiGroup === 'core' ? '' : subject.apiGroup,
96
+ kind: subject.kind,
97
+ name: subject.name,
98
+ namespace: subject.namespace,
99
+ }));
100
+ }
101
+ }
102
+ exports.ClusterRoleBinding = ClusterRoleBinding;
103
+ _b = JSII_RTTI_SYMBOL_1;
104
+ ClusterRoleBinding[_b] = { fqn: "cdk8s-plus-31.ClusterRoleBinding", version: "2.0.0" };
105
+ /**
106
+ * Represents a user.
107
+ */
108
+ class User extends constructs_1.Construct {
109
+ constructor(scope, id, name) {
110
+ super(scope, id);
111
+ this.apiGroup = 'rbac.authorization.k8s.io';
112
+ this.kind = 'User';
113
+ this.name = name;
114
+ }
115
+ /**
116
+ * Reference a user in the cluster by name.
117
+ */
118
+ static fromName(scope, id, name) {
119
+ return new User(scope, id, name);
120
+ }
121
+ /**
122
+ * @see ISubect.toSubjectConfiguration()
123
+ */
124
+ toSubjectConfiguration() {
125
+ return {
126
+ kind: this.kind,
127
+ name: this.name,
128
+ apiGroup: this.apiGroup,
129
+ };
130
+ }
131
+ }
132
+ exports.User = User;
133
+ _c = JSII_RTTI_SYMBOL_1;
134
+ User[_c] = { fqn: "cdk8s-plus-31.User", version: "2.0.0" };
135
+ /**
136
+ * Represents a group.
137
+ */
138
+ class Group extends constructs_1.Construct {
139
+ constructor(scope, id, name) {
140
+ super(scope, id);
141
+ this.apiGroup = 'rbac.authorization.k8s.io';
142
+ this.kind = 'Group';
143
+ this.name = name;
144
+ }
145
+ /**
146
+ * Reference a group by name.
147
+ */
148
+ static fromName(scope, id, name) {
149
+ return new Group(scope, id, name);
150
+ }
151
+ /**
152
+ * @see ISubect.toSubjectConfiguration()
153
+ */
154
+ toSubjectConfiguration() {
155
+ return {
156
+ kind: this.kind,
157
+ name: this.name,
158
+ apiGroup: this.apiGroup,
159
+ };
160
+ }
161
+ }
162
+ exports.Group = Group;
163
+ _d = JSII_RTTI_SYMBOL_1;
164
+ Group[_d] = { fqn: "cdk8s-plus-31.Group", version: "2.0.0" };
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1iaW5kaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvbGUtYmluZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUF3QztBQUN4QywyQ0FBbUQ7QUFDbkQsaUNBQWlEO0FBQ2pELHFDQUFxQztBQUVyQyxtQ0FBMEM7QUEyRDFDOzs7R0FHRztBQUNILE1BQWEsV0FBWSxTQUFRLGVBQVE7SUFZdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBUEgsaUJBQVksR0FBRyxjQUFjLENBQUM7UUFTNUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixRQUFRLEVBQUUsWUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7U0FDL0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxHQUFHLFFBQW9CO1FBQ3hDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELElBQVcsUUFBUTtR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RUFBRSxFQUFVLEVBQUUsSUFBWTtRQUMvRCxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQVdEOztPQUVHO0lBQ0ksc0JBQXNCO1FBQzNCLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQztJQUNKLENBQUM7O0FBM0JILHNCQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaU9iamVjdCwgTGF6eSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFJlc291cmNlUHJvcHMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgazhzIGZyb20gJy4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0ICogYXMgcm9sZSBmcm9tICcuL3JvbGUnO1xuaW1wb3J0IHsgZmlsdGVyVW5kZWZpbmVkIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogU3ViamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9yIHVzZXIgaWRlbnRpdGllcyBhIHJvbGUgYmluZGluZ1xuICogYXBwbGllcyB0by4gVGhpcyBjYW4gZWl0aGVyIGhvbGQgYSBkaXJlY3QgQVBJIG9iamVjdCByZWZlcmVuY2UsIG9yIGEgdmFsdWVcbiAqIGZvciBub24tb2JqZWN0cyBzdWNoIGFzIHVzZXIgYW5kIGdyb3VwIG5hbWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YmplY3RDb25maWd1cmF0aW9uIHtcblxuICAvKipcbiAgICogQVBJR3JvdXAgaG9sZHMgdGhlIEFQSSBncm91cCBvZiB0aGUgcmVmZXJlbmNlZCBzdWJqZWN0LiBEZWZhdWx0cyB0byBcIlwiIGZvclxuICAgKiBTZXJ2aWNlQWNjb3VudCBzdWJqZWN0cy4gRGVmYXVsdHMgdG8gXCJyYmFjLmF1dGhvcml6YXRpb24uazhzLmlvXCIgZm9yIFVzZXJcbiAgICogYW5kIEdyb3VwIHN1YmplY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR3JvdXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEtpbmQgb2Ygb2JqZWN0IGJlaW5nIHJlZmVyZW5jZWQuIFZhbHVlcyBkZWZpbmVkIGJ5IHRoaXMgQVBJIGdyb3VwIGFyZVxuICAgKiBcIlVzZXJcIiwgXCJHcm91cFwiLCBhbmQgXCJTZXJ2aWNlQWNjb3VudFwiLiBJZiB0aGUgQXV0aG9yaXplciBkb2VzIG5vdFxuICAgKiByZWNvZ25pemVkIHRoZSBraW5kIHZhbHVlLCB0aGUgQXV0aG9yaXplciBzaG91bGQgcmVwb3J0IGFuIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBvYmplY3QgYmVpbmcgcmVmZXJlbmNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZXNwYWNlIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdC4gIElmIHRoZSBvYmplY3Qga2luZCBpcyBub24tbmFtZXNwYWNlLFxuICAgKiBzdWNoIGFzIFwiVXNlclwiIG9yIFwiR3JvdXBcIiwgYW5kIHRoaXMgdmFsdWUgaXMgbm90IGVtcHR5IHRoZSBBdXRob3JpemVyXG4gICAqIHNob3VsZCByZXBvcnQgYW4gZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgcm9sZSBiaW5kaW5nIHN1YmplY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YmplY3QgZXh0ZW5kcyBJQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzdWJqZWN0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICB0b1N1YmplY3RDb25maWd1cmF0aW9uKCk6IFN1YmplY3RDb25maWd1cmF0aW9uO1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYFJvbGVCaW5kaW5nYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xlQmluZGluZ1Byb3BzIGV4dGVuZHMgUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0byBiaW5kIHRvLiBBIFJvbGVCaW5kaW5nIGNhbiByZWZlcmVuY2UgYSBSb2xlIG9yIGEgQ2x1c3RlclJvbGUuXG4gICAqL1xuICByZWFkb25seSByb2xlOiByb2xlLklSb2xlO1xufVxuXG4vKipcbiAqIEEgUm9sZUJpbmRpbmcgZ3JhbnRzIHBlcm1pc3Npb25zIHdpdGhpbiBhIHNwZWNpZmljIG5hbWVzcGFjZSB0byBhIHVzZXIgb3JcbiAqIHNldCBvZiB1c2Vycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvbGVCaW5kaW5nIGV4dGVuZHMgUmVzb3VyY2Uge1xuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAncm9sZWJpbmRpbmdzJztcblxuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogcm9sZS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0czogQXJyYXk8SVN1YmplY3Q+O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb2xlQmluZGluZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGU7XG5cbiAgICB0aGlzLl9zdWJqZWN0cyA9IG5ldyBBcnJheTxJU3ViamVjdD4oKTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlUm9sZUJpbmRpbmcodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbWV0YWRhdGE6IHByb3BzLm1ldGFkYXRhLFxuICAgICAgc3ViamVjdHM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5zeW50aGVzaXplU3ViamVjdHMoKSB9KSxcbiAgICAgIHJvbGVSZWY6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5zeW50aGVzaXplUm9sZVJlZigpIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdWJqZWN0IHRvIHRoZSByb2xlLlxuICAgKiBAcGFyYW0gc3ViamVjdHMgVGhlIHN1YmplY3RzIHRvIGFkZFxuICAgKi9cbiAgcHVibGljIGFkZFN1YmplY3RzKC4uLnN1YmplY3RzOiBJU3ViamVjdFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJqZWN0IG9mIHN1YmplY3RzKSB7XG4gICAgICB0aGlzLl9zdWJqZWN0cy5wdXNoKHN1YmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3ViamVjdHMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9zdWJqZWN0c107XG4gIH1cblxuICBwcml2YXRlIHN5bnRoZXNpemVSb2xlUmVmKCk6IGs4cy5Sb2xlUmVmIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXBpR3JvdXA6IHRoaXMucm9sZS5hcGlHcm91cCxcbiAgICAgIGtpbmQ6IHRoaXMucm9sZS5raW5kLFxuICAgICAgbmFtZTogdGhpcy5yb2xlLm5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3ludGhlc2l6ZVN1YmplY3RzKCk6IGs4cy5TdWJqZWN0W10ge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0cy5tYXAoc3ViamVjdCA9PiBzdWJqZWN0LnRvU3ViamVjdENvbmZpZ3VyYXRpb24oKSkubWFwKChzdWJqZWN0KSA9PiBmaWx0ZXJVbmRlZmluZWQoe1xuICAgICAgYXBpR3JvdXA6IHN1YmplY3QuYXBpR3JvdXAgPT09ICdjb3JlJyA/ICcnIDogc3ViamVjdC5hcGlHcm91cCxcbiAgICAgIGtpbmQ6IHN1YmplY3Qua2luZCxcbiAgICAgIG5hbWU6IHN1YmplY3QubmFtZSxcbiAgICAgIG5hbWVzcGFjZTogc3ViamVjdC5uYW1lc3BhY2UsXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYENsdXN0ZXJSb2xlQmluZGluZ2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlclJvbGVCaW5kaW5nUHJvcHMgZXh0ZW5kcyBSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIGJpbmQgdG8uXG4gICAqL1xuICByZWFkb25seSByb2xlOiByb2xlLklDbHVzdGVyUm9sZTtcbn1cblxuLyoqXG4gKiBBIENsdXN0ZXJSb2xlQmluZGluZyBncmFudHMgcGVybWlzc2lvbnMgY2x1c3Rlci13aWRlIHRvIGEgdXNlciBvclxuICogc2V0IG9mIHVzZXJzLlxuICovXG5leHBvcnQgY2xhc3MgQ2x1c3RlclJvbGVCaW5kaW5nIGV4dGVuZHMgUmVzb3VyY2Uge1xuICAvKipcbiAgICogQHNlZSBiYXNlLlJlc291cmNlLmFwaU9iamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaU9iamVjdDogQXBpT2JqZWN0O1xuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZVR5cGUgPSAnY2x1c3RlcnJvbGViaW5kaW5ncyc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IHJvbGUuSUNsdXN0ZXJSb2xlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3RzOiBBcnJheTxJU3ViamVjdD47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsdXN0ZXJSb2xlQmluZGluZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGU7XG5cbiAgICB0aGlzLl9zdWJqZWN0cyA9IG5ldyBBcnJheTxJU3ViamVjdD4oKTtcblxuICAgIHRoaXMuYXBpT2JqZWN0ID0gbmV3IGs4cy5LdWJlQ2x1c3RlclJvbGVCaW5kaW5nKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG1ldGFkYXRhOiBwcm9wcy5tZXRhZGF0YSxcbiAgICAgIHN1YmplY3RzOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc3ludGhlc2l6ZVN1YmplY3RzKCkgfSksXG4gICAgICByb2xlUmVmOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc3ludGhlc2l6ZVJvbGVSZWYoKSB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3ViamVjdCB0byB0aGUgcm9sZS5cbiAgICogQHBhcmFtIHN1YmplY3RzIFRoZSBzdWJqZWN0cyB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGRTdWJqZWN0cyguLi5zdWJqZWN0czogSVN1YmplY3RbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3ViamVjdCBvZiBzdWJqZWN0cykge1xuICAgICAgdGhpcy5fc3ViamVjdHMucHVzaChzdWJqZWN0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1YmplY3RzKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fc3ViamVjdHNdO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW50aGVzaXplUm9sZVJlZigpOiBrOHMuUm9sZVJlZiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwaUdyb3VwOiB0aGlzLnJvbGUuYXBpR3JvdXAsXG4gICAgICBraW5kOiB0aGlzLnJvbGUua2luZCxcbiAgICAgIG5hbWU6IHRoaXMucm9sZS5uYW1lLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN5bnRoZXNpemVTdWJqZWN0cygpOiBrOHMuU3ViamVjdFtdIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdHMubWFwKHN1YmplY3QgPT4gc3ViamVjdC50b1N1YmplY3RDb25maWd1cmF0aW9uKCkpLm1hcCgoc3ViamVjdCkgPT4gZmlsdGVyVW5kZWZpbmVkKHtcbiAgICAgIGFwaUdyb3VwOiBzdWJqZWN0LmFwaUdyb3VwID09PSAnY29yZScgPyAnJyA6IHN1YmplY3QuYXBpR3JvdXAsXG4gICAgICBraW5kOiBzdWJqZWN0LmtpbmQsXG4gICAgICBuYW1lOiBzdWJqZWN0Lm5hbWUsXG4gICAgICBuYW1lc3BhY2U6IHN1YmplY3QubmFtZXNwYWNlLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB1c2VyLlxuICovXG5leHBvcnQgY2xhc3MgVXNlciBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElTdWJqZWN0IHtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGEgdXNlciBpbiB0aGUgY2x1c3RlciBieSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFVzZXIoc2NvcGUsIGlkLCBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBhcGlHcm91cDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ3JiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8nO1xuICBwdWJsaWMgcmVhZG9ubHkga2luZDogc3RyaW5nID0gJ1VzZXInO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSVN1YmVjdC50b1N1YmplY3RDb25maWd1cmF0aW9uKClcbiAgICovXG4gIHB1YmxpYyB0b1N1YmplY3RDb25maWd1cmF0aW9uKCk6IFN1YmplY3RDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogdGhpcy5raW5kLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgYXBpR3JvdXA6IHRoaXMuYXBpR3JvdXAsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBncm91cC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyb3VwIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVN1YmplY3Qge1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYSBncm91cCBieSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEdyb3VwKHNjb3BlLCBpZCwgbmFtZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgYXBpR3JvdXA6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyYmFjLmF1dGhvcml6YXRpb24uazhzLmlvJztcbiAgcHVibGljIHJlYWRvbmx5IGtpbmQ6IHN0cmluZyA9ICdHcm91cCc7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJU3ViZWN0LnRvU3ViamVjdENvbmZpZ3VyYXRpb24oKVxuICAgKi9cbiAgcHVibGljIHRvU3ViamVjdENvbmZpZ3VyYXRpb24oKTogU3ViamVjdENvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBhcGlHcm91cDogdGhpcy5hcGlHcm91cCxcbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==