k8ts
Version:
Powerful framework for building Kubernetes manifests in TypeScript.
46 lines • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClusterRole = void 0;
const instruments_1 = require("@k8ts/instruments");
const doddle_1 = require("doddle");
const rbac_1 = require("../../kinds/rbac");
class ClusterRole_Scope {
Rule(...resources) {
return {
verbs(...verbs) {
return {
resources: resources,
verbs: verbs
};
}
};
}
}
class ClusterRole extends instruments_1.Resource_Top {
get kind() {
return rbac_1.rbac.v1.ClusterRole._;
}
constructor(name, props) {
super(name, props);
}
_fromObject(rule) {
return {
apiGroups: Array.from(new Set(rule.resources.map(x => x.parent.parent.name))),
resources: rule.resources.map(r => r.plural),
verbs: rule.verbs
};
}
body() {
const rules = (0, doddle_1.seq)(this.props.rules(new ClusterRole_Scope()))
.map(rule => {
return this._fromObject(rule);
})
.toArray()
.pull();
return {
rules: rules
};
}
}
exports.ClusterRole = ClusterRole;
//# sourceMappingURL=cluster-role.js.map