in projenrc/abstract/pdk-project.ts [233:266]
export function overrideField(
obj: any,
path: string,
value: any,
append?: boolean
): void {
const parts = path.split(".");
let curr = obj;
while (parts.length > 1) {
const key = parts.shift() as string;
// if we can't recurse further or the previous value is not an
// object overwrite it with an object.
const isObject =
curr[key] != null &&
typeof curr[key] === "object" &&
!Array.isArray(curr[key]);
if (!isObject) {
curr[key] = {};
}
curr = curr[key];
}
const lastKey = parts.shift() as string;
if (
append &&
curr[lastKey] != null &&
Array.isArray(value) &&
Array.isArray(curr[lastKey])
) {
curr[lastKey] = [...curr[lastKey], ...value];
} else {
curr[lastKey] = value;
}
}