cdk8s
Version:
This is the core library of Cloud Development Kit (CDK) for Kubernetes (cdk8s). cdk8s apps synthesize into standard Kubernetes manifests which can be applied to any Kubernetes cluster.
35 lines • 4.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sanitizeValue = sanitizeValue;
function sanitizeValue(obj, options = {}) {
if (obj == null) {
return undefined;
}
if (typeof (obj) !== 'object') {
return obj;
}
if (Array.isArray(obj)) {
if (options.filterEmptyArrays && obj.length === 0) {
return undefined;
}
return obj.map(x => sanitizeValue(x, options));
}
if (obj.constructor.name !== 'Object') {
throw new Error(`can't render non-simple object of type '${obj.constructor.name}'`);
}
const newObj = {};
const sortKeys = options.sortKeys ?? true;
const keys = sortKeys ? Object.keys(obj).sort() : Object.keys(obj);
for (const key of keys) {
const value = obj[key];
const newValue = sanitizeValue(value, options);
if (newValue != null) {
newObj[key] = newValue;
}
}
if (options.filterEmptyObjects && Object.keys(newObj).length === 0) {
return undefined;
}
return newObj;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvQkEsc0NBdUNDO0FBdkNELFNBQWdCLGFBQWEsQ0FBQyxHQUFRLEVBQUUsVUFBMkIsRUFBRztJQUNwRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxPQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFdkIsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQTJCLEVBQUcsQ0FBQztJQUUzQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztJQUMxQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNhbml0aXplT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEbyBub3QgaW5jbHVkZSBlbXB0eSBvYmplY3RzIChubyBrZXlzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlckVtcHR5T2JqZWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBpbmNsdWRlIGFycmF5cyB3aXRoIG5vIGl0ZW1zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyRW1wdHlBcnJheXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb3J0IGRpY3Rpb25hcnkga2V5cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc29ydEtleXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVWYWx1ZShvYmo6IGFueSwgb3B0aW9uczogU2FuaXRpemVPcHRpb25zID0geyB9KTogYW55IHtcbiAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Yob2JqKSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXG4gICAgaWYgKG9wdGlvbnMuZmlsdGVyRW1wdHlBcnJheXMgJiYgb2JqLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqLm1hcCh4ID0+IHNhbml0aXplVmFsdWUoeCwgb3B0aW9ucykpO1xuICB9XG5cbiAgaWYgKG9iai5jb25zdHJ1Y3Rvci5uYW1lICE9PSAnT2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2FuJ3QgcmVuZGVyIG5vbi1zaW1wbGUgb2JqZWN0IG9mIHR5cGUgJyR7b2JqLmNvbnN0cnVjdG9yLm5hbWV9J2ApO1xuICB9XG5cbiAgY29uc3QgbmV3T2JqOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0geyB9O1xuXG4gIGNvbnN0IHNvcnRLZXlzID0gb3B0aW9ucy5zb3J0S2V5cyA/PyB0cnVlO1xuICBjb25zdCBrZXlzID0gc29ydEtleXMgPyBPYmplY3Qua2V5cyhvYmopLnNvcnQoKSA6IE9iamVjdC5rZXlzKG9iaik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gc2FuaXRpemVWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcbiAgICAgIG5ld09ialtrZXldID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuZmlsdGVyRW1wdHlPYmplY3RzICYmIE9iamVjdC5rZXlzKG5ld09iaikubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBuZXdPYmo7XG59XG4iXX0=