k8ts
Version:
Powerful framework for building Kubernetes manifests in TypeScript.
96 lines • 2.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnvBuilder = void 0;
exports.Env = Env;
const doddle_1 = require("doddle");
const what_are_you_1 = require("what-are-you");
const error_1 = require("../error");
const index_1 = require("../kinds/index");
const validate_name_1 = require("./validate-name");
class EnvBuilder {
_env;
constructor(_env) {
this._env = _env;
for (const key of Object.keys(_env)) {
if (!(0, validate_name_1.isValidEnvVarName)(key)) {
throw new error_1.MakeError("Invalid environment variable name", {
key: key
});
}
}
}
get values() {
return this._env;
}
_envFromSecret(value) {
return {
secretKeyRef: {
name: value.$backend.name,
key: value.key,
optional: value.optional
}
};
}
_envFromConfigMap(value) {
return {
configMapKeyRef: {
name: value.$backend.name,
key: value.key,
optional: value.optional
}
};
}
*[Symbol.iterator]() {
for (const entry of Object.entries(this._env)) {
yield entry;
}
}
toEnvVars() {
return (0, doddle_1.seq)(this)
.map(([key, value]) => {
if (!(0, what_are_you_1.isObject)(value)) {
return {
name: key,
value: `${value}`
};
}
const resourceValue = value;
switch (resourceValue.$backend.kind) {
case index_1.v1.Secret._:
return {
name: key,
valueFrom: this._envFromSecret(resourceValue)
};
case index_1.v1.ConfigMap._:
return {
name: key,
valueFrom: this._envFromConfigMap(resourceValue)
};
default:
throw new error_1.MakeError("Invalid environment variable reference", {
key: key,
value: value
});
}
})
.toArray()
.pull();
}
toObject() {
return (0, doddle_1.seq)(this)
.filter(([, v]) => v != null)
.toRecord(([k, v]) => [k, `${v}`])
.pull();
}
get entries() {
return Object.entries(this._env);
}
static make(env) {
return new EnvBuilder(env ?? {});
}
}
exports.EnvBuilder = EnvBuilder;
function Env(env) {
return EnvBuilder.make(env);
}
//# sourceMappingURL=env.js.map