UNPKG

k8ts

Version:

Powerful framework for building Kubernetes manifests in TypeScript.

96 lines 2.81 kB
"use strict"; 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