in libs/designer/src/lib/core/utils/swagger/inputsbuilder.ts [872:909]
export function deletePropertyValueWithSpecifiedPathSegment(value: any, segments: Segment[], caseSensitive = false) {
let reachEnd = true;
const cloneSegments = [...segments];
while (cloneSegments.length > 0) {
const deleteValue = getPropertyValueWithSpecifiedPathSegments(value, cloneSegments, caseSensitive);
if (deleteValue === undefined) {
break;
}
const lastSegment = cloneSegments.pop() as Segment;
const parentValue = getPropertyValueWithSpecifiedPathSegments(value, cloneSegments, caseSensitive);
let propertyName = getAndEscapeSegment(lastSegment);
if (!caseSensitive && typeof parentValue === 'object' && typeof propertyName === 'string') {
for (const key of Object.keys(parentValue)) {
if (equals(key, propertyName)) {
propertyName = key;
break;
}
}
}
if (reachEnd) {
reachEnd = false;
delete parentValue[propertyName];
} else {
let ableDelete = true;
if (typeof deleteValue === 'object' && Object.keys(deleteValue).some((key) => deleteValue[key] !== undefined)) {
ableDelete = false;
} else if (Array.isArray(deleteValue) && deleteValue.some((item) => item !== undefined)) {
ableDelete = false;
}
if (ableDelete) {
delete parentValue[propertyName];
}
}
}
}